2017-05-28 111 views
-1

我试着做了(2 << 31)的左移操作,但结果我得到的结果是0。我想知道为什么导致0以及(2 << n)中的最大范围n左移操作的最大范围

+4

您需要在其中添加更多信息:您正在使用哪种语言以及您使用的是哪种数据类型。 – jsbueno

回答

0

2为10进制,在32位数据中存储为00000000000000000000000000000010。你正在试图将这个10向左移动31.因为10已经占据2个位置,它将向左跳31个减2个0。当它到达第32位时,第10位的'0'将被存储在第32位,'1'将丢失,因为在32之后没有位置。因此结果将是000000000000000000000000000这是0.