为了账号安全,请及时绑定邮箱和手机立即绑定

运算符“ <<”和“ >>”做什么?

运算符“ <<”和“ >>”做什么?

Go
慕森卡 2021-05-11 17:58:37
我正在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)。


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信