我正在学习按位操作,无法弄清楚305419896位移到28位等于1?有人可以解释一下吗?
答案 0 :(得分:4)
305419896
为1001000110100010101100111100
(即29位)。如果我们取得该值并将所有位移到正确的28位,我们最终只有1
(二进制和十进制)。
答案 1 :(得分:2)
您可以将>> n
视为2 ^ n的截断除法。
305419896 / 2^28 -> 305419896 / 268435456 -> 1.1377777755260468
小数部分被删除,留下1。
当然,正如andars所说,计算机通过位移来实现这一点 阅读this question以获得良好的理解。