我尝试对(2 << 31
)执行左移操作,但得到的结果是0
。我想知道为什么会导致0
以及n
中2 << n
的最大范围是什么?
答案 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。