所以我正在为C做位移位
00001010 >> 4不应该给0000000吗?
因为我把这个比特移到了4倍,这和除以4是一样的。但是在我的笔记上,它说10101000是错的吗?
发布于 2018-12-03 20:37:31
每一次移动等于将值除以2,向右移动四次就等于除以2,四次。它是整数的数学,所以任何小数部分都被截断。
假设00001010
(10)是二进制表示法,结果如下:
移位1:00000101
(5)
移位2:00000010
(2)
移位3:00000001
(1)
移位4:00000000
(0)
结果确实是0。
发布于 2018-12-02 21:11:42
你的笔记错了。printf("%d\n", strtol("00001010", 0, 2) >> 4)
生成“0”。
发布于 2018-12-02 21:14:45
向右移动00001010 bin (10月10日)4次将确实给您: 00000000 bin (0 12月),而左移4次: 00001010 bin (12月10日)将给您10100000 bin (160Dec编辑)
https://stackoverflow.com/questions/53584598
复制相似问题