所以我正在为C做位移位
00001010 >> 4 不应该给 0000000?
因为我要将该位右移4次,这与除以4相同。 但在我的笔记上说 10101000 笔记错了吗?
答案 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。