2017-05-28 38 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.