我正在http://tour.golang.org上进行“ GO之旅” 。表15包含一些我无法理解的代码。它使用以下语法定义两个常量:const ( Big = 1<<100 Small = Big>>99)我还不清楚这是什么意思。我试图修改代码并以不同的值运行它,以记录更改,但是我不明白那里发生了什么。然后,它在表24上再次使用该运算符。它使用以下语法定义变量:MaxInt uint64 = 1<<64 - 1当它打印变量时,它会打印:uint64(18446744073709551615)uint64类型在哪里。但我不知道18446744073709551615从哪里来。
3 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
他们是Go的按位移位运算符。
这很好地解释了它们如何在C中工作(它们在几种语言中的工作方式相同)。基本上1<<64 - 1
对应于2 ^ 64 -1,= 18446744073709551615。
这样想吧。如果您从001(即10 ^ 0)开始,然后以1移至左侧,则以十进制表示,最后以010(即10 ^ 1)结束。如果再次移位,则以100结尾,即10 ^ 2。因此,向左移动等同于移动10倍。
在二进制中是一样的东西,但是在基数2中,所以1 << 64意味着乘以2 64倍(即2 ^ 64)。
- 3 回答
- 0 关注
- 234 浏览
添加回答
举报
0/150
提交
取消