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

>>在Go语言中是什么意思?

>>在Go语言中是什么意思?

Go
精慕HU 2021-05-02 05:33:33
我正在寻找有关Google Go语言的信息。在“ A Go of Go”中,他们具有以下代码:const (    Big = 1<<100    Small = Big>>99)但是什么<<和>> 意味着什么呢?您可以在http://tour.golang.org/#14上看到所有代码
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

它们是按位移位运算符。x << y表示x  ×2 y,而x >> y表示x  ×2 -y或等效地x÷2 y。这些运算符通常用于操作值的二进制表示形式,就像用十进制的10的幂一样,乘以2的乘方或除以分别将数字“左移”或“右移”:


// Left shift:


  13 *  2 ==    26 // decimal

1101 * 10 == 11010 // binary (13 is 8 + 4 + 0 + 1)


// Right shift (brackets denote discarded portion):


  13 /  2 ==   6[.5] // decimal

1101 / 10 == 110[.1] // binary

由于您是对整数进行运算,并且右移通常会产生分数值,因此有两种方法可以处理右舍入的结果如何取整。在Go中,右移是无符号值的逻辑移位,而有符号值的算术移位。逻辑移位总是四舍五入,而算术移位总是四舍五入,即-∞。


查看完整回答
反对 回复 2021-05-10
?
GCT1015

TA贡献1827条经验 获得超4个赞

从规格:


Arithmetic operators


...


<<   left shift             integer << unsigned integer

>>   right shift            integer >> unsigned integer

以及以下:


移位运算符将左操作数移位由右操作数指定的移位计数。如果左操作数是有符号整数,则执行算术移位;如果左操作数是无符号整数,则执行逻辑移位。班次计数没有上限。移位的行为就好像左操作数被n移位了n次,移位次数为n。结果,x << 1与x * 2相同,x >> 1与x / 2相同,但被截断为负无穷大。


查看完整回答
反对 回复 2021-05-10
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

这是位左移位右移运算符。它们与C语言及其衍生语言相同。

x << y

是x的2乘以y的幂

x >> y

x被2除以y的幂(小数部分被舍弃)

如果将数字视为二进制,则乘以2的幂会将位左移(101 * 2 ^ 3变为101000),其方式与十进制乘以10的幂相同,即将数字左移(12340 * 10 ^ 3变成12340000)。相反,除以2的幂是正确的。它会将二进制表示形式向右移动。由此得名。顺便说一句,这对于计算机而言是一种极其快速的操作,因此,它在诸如密码学之类的性能至关重要的比特旋转应用中被大量使用。


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

添加回答

举报

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