c 语言不太理解说的右移和左移的情况。能举个例子解释下那吗。就是左移动高位低位。右移无符号。负整数

c语言不太理解说的右移和左移的情况。能举个例子解释下那吗。就是左移动高位低位。右移无符号。负整数的情况。不明白在说啥⊙﹏⊙... c 语言不太理解说的右移和左移的情况。能举个例子解释下那吗。就是左移动高位低位。右移无符号。负整数的情况。不明白在说啥⊙﹏⊙ 展开
 我来答
Linmson
2014-03-18 · TA获得超过138个赞
知道答主
回答量:124
采纳率:100%
帮助的人:130万
展开全部
  左移时左端高位移出的部分舍弃是啥意思。还有右移时负整数高位补一是啥意思??

  解答:正数在存储的时候就是原数字,但是负数要采取补码的方式存储。这样,负数的最高位就是1。比如:对于32位的系统int为四个字节,共32位,数字1就是0xffffffff(即-1的补码,最高位是1)。
  对于0xffffffff 已经占满的32个位,左移时,高位全部舍去不要,低位补0.比如左移4位就变成 0xfffffff0。但是右移就不一样了,右移时,低位舍去,高位补1,(原来的最高位就是1),所以右移四位还是 0xffffffff ,而不是 0x0fffffff。
更多追问追答
追问
看不明白(⊙﹏⊙)
追答
好吧!! 移位是对二进制而言的。二进制你该知道吧!
我们先拿8位的数字作为例子。
数字1是:0000 0001,
左移就是所有位向左移一位,可是数字 0000 0001 只有8个位,那么最左边的(也就是高位)移就移出去了,就舍弃;最低位右边又没有数字,我们默认最低位右边往左移一个0.就变成 0000 0010,都往左移啊!
右移就是所有位向右移一位,数字0000 0001 往右移动,那么最右边(就是最低位)的1就移出去了,只能舍去;最高位左边没有数字,但是这是个正数,就移动一个0,就变成 0000 0000。
数字-1 二进制就是 1111 1111 (为什么-1是这个1111 1111你要是不知道就先去查查资料),
左移是一样的最左边往左移动舍去,最右边往左移动个0 就变成 1111, 1110。
右移最右边往右移动舍去,最左边往左移动时,由于这是负数,就移动1,所以右边的1舍去,但是左边补的还是1,所以右移一位 还是1111 1111。
497005046
2014-03-18 · 超过22用户采纳过TA的回答
知道答主
回答量:131
采纳率:100%
帮助的人:41.7万
展开全部
1>> 就是0001 右移位 变成 0000 就变成0了
1<< 就是0001 左移位 变成0010 变成2 了
更多追问追答
追问
那左移右端低位补0左端高位移除部分舍弃是啥意思
追答
就是左移的时候右边补零

1>
0001
0000这不是舍弃了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
褪净浮躁
2014-03-18 · TA获得超过238个赞
知道答主
回答量:502
采纳率:0%
帮助的人:84.9万
展开全部
唉,你这是干啥呢?
更多追问追答
追问
我在问问题>"<|||
追答
你也在百度知道注册了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式