2017-12-18 139 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

啊,在那里的规范...感谢您的答案和代码链接。 –