左移操作的最大范围

时间:2017-05-28 20:04:23

标签: bit-manipulation

我尝试对(2 << 31)执行左移操作,但得到的结果是0。我想知道为什么会导致0以及n2 << n的最大范围是什么?

1 个答案:

答案 0 :(得分:0)

2是二进制10并且在32位数据中存储为00000000000000000000000000000010。你试图将那个10向左移动31个。由于10个已占据2个位置,它将向左跳跃31减去2 0。当它达到第32 0时,&#39; 0&#39;从10个将存储在第32位和&#39; 1&#39;因为32之后没有地方就会丢失。所以结果将是0000000000000000000000000000000,即0。