2017-12-18 33 views
1

在Go的constant specification,應提到的是:轉到移位數太大

數字常量表示的任意精度的精確值,並不會溢出。

所以,我想

const VeryVeryBigNumber = 1 << 200

和它的作品。然而,我可以嘗試的最大轉移數是511,並且使用512將會拋出:

shift count too large: 512

512代表什麼?我無意使用它,我只想知道爲什麼它僅限於我的機器中的511(我正在使用ubuntu 64位並轉到1.9.2)?

謝謝

回答

3

512是一種任意限制。該規範說的唯一的一句話就是:

實施限制:雖然數字常量的語言有任意 精度,編譯器可以使用精度有限的 內部表示實現它們。也就是說,每個 實現必須:

表示具有至少256位的整數常量。

不幸的是,comments around the limits沒有給出理由。

在某些時候,必須使用限制。我會建議堅持所需的256.

+0

啊,在那裏的規範...感謝您的答案和代碼鏈接。 –