C语言中,与2乘左移,与2除右移,这个是啥意思,求详细解释!!!

 我来答
布策幸向荣
2020-04-09 · TA获得超过3856个赞
知道大有可为答主
回答量:3080
采纳率:32%
帮助的人:238万
展开全部
这句话的意思就是:
对一个数实施左移操作=对这个数×2;
对一个数实施右移操作=对这个数÷2。
这个是计算机基本的二进制操作,因此不仅仅局限于C语言,
事实上绝大多数计算机编程语言都支持这个操作。
理解很容易:
一个(十进制的)数,在电脑里面都可以按二进制表示。
比如数字8,
二进制就是1000.
左移一位,1000
<<
1
=
0001
0000
=
16,
因此就是=8×2;同理右移一位,
1000
>>
1
=
0100
=
4,
就是8÷2.
一个十进制a(这里先以正整数为例说明),
总可以表示成:
a
=
a[n-1]*2^(n-1)+a[n-2]*2(n-2)
+
....
a[1]*2^1
+
a[0]+2^0;
这里a[n-1]....a[0]的取值范围就是0或1,就是一个二进制数各个位上权系数。
假设a[i]
<<
k;
a[i]
->
a[i+k];
它对整个数的贡献值,从2^i
->
2^(i+k)
=
2^i
×
2^k,
二进制的每一位都这样操作,因此这个数就被放大了2^k倍。当k=1的时候,就是×2;同理右移就是÷2^k.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
项墨崇冬梅
2019-11-13 · TA获得超过3736个赞
知道大有可为答主
回答量:3183
采纳率:24%
帮助的人:202万
展开全部
c语言中
<<
是逻辑移位,不是循环移位。
1
左移
32
位后为
0,左移
-1
位实际是左移
255
位(互补),当然也是0。
这种问题可以写一段小程序,单步执行,看一下每一步的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式