位移位,右移4位

时间:2018-12-02 21:03:27

标签: c

所以我正在为C做位移位

00001010 >> 4 不应该给 0000000?

因为我要将该位右移4次,这与除以4相同。 但在我的笔记上说 10101000 笔记错了吗?

3 个答案:

答案 0 :(得分:0)

您的笔记有误。 printf("%d\n", strtol("00001010", 0, 2) >> 4)产生“ 0”。

答案 1 :(得分:0)

右移 00001010 bin(12月10日)4次确实会给您:00000000 bin(12月0日) 而向左移动的4次:00001010 bin(12月10日)将为您提供:10100000 bin(160 dec 已编辑

答案 2 :(得分:0)

每个移位与将值除以2相同。向右移位四次就像将2除以四倍。这是整数数学,因此任何小数部分都会被截断。

假设00001010(10)是二进制表示法,结果如下:

Shift 1:00000101(5)
班次2:00000010(2)
班次3:00000001(1)
Shift 4:00000000(0)

所以结果确实为0。