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

我正在寻找有关Google Go语言的信息。在“ A Go of Go”中,他们具有以下代码:


const (

    Big = 1<<100

    Small = Big>>99

)

但是什么<<和>> 意味着什么呢?


您可以在http://tour.golang.org/#14上看到所有代码


精慕HU
浏览 768回答 3
3回答

慕雪6442864

它们是按位移位运算符。x << y表示x&nbsp; ×2 y,而x >> y表示x&nbsp; ×2 -y或等效地x÷2 y。这些运算符通常用于操作值的二进制表示形式,就像用十进制的10的幂一样,乘以2的乘方或除以分别将数字“左移”或“右移”:// Left shift:&nbsp; 13 *&nbsp; 2 ==&nbsp; &nbsp; 26 // decimal1101 * 10 == 11010 // binary (13 is 8 + 4 + 0 + 1)// Right shift (brackets denote discarded portion):&nbsp; 13 /&nbsp; 2 ==&nbsp; &nbsp;6[.5] // decimal1101 / 10 == 110[.1] // binary由于您是对整数进行运算,并且右移通常会产生分数值,因此有两种方法可以处理右舍入的结果如何取整。在Go中,右移是无符号值的逻辑移位,而有符号值的算术移位。逻辑移位总是四舍五入,而算术移位总是四舍五入,即-∞。

GCT1015

从规格:Arithmetic operators...<<&nbsp; &nbsp;left shift&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;integer << unsigned integer>>&nbsp; &nbsp;right shift&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; integer >> unsigned integer以及以下:移位运算符将左操作数移位由右操作数指定的移位计数。如果左操作数是有符号整数,则执行算术移位;如果左操作数是无符号整数,则执行逻辑移位。班次计数没有上限。移位的行为就好像左操作数被n移位了n次,移位次数为n。结果,x << 1与x * 2相同,x >> 1与x / 2相同,但被截断为负无穷大。

幕布斯7119047

这是位左移和位右移运算符。它们与C语言及其衍生语言相同。x&nbsp;<<&nbsp;y是x的2乘以y的幂x&nbsp;>>&nbsp;yx被2除以y的幂(小数部分被舍弃)如果将数字视为二进制,则乘以2的幂会将位左移(101 * 2 ^ 3变为101000),其方式与十进制乘以10的幂相同,即将数字左移(12340 * 10 ^ 3变成12340000)。相反,除以2的幂是正确的。它会将二进制表示形式向右移动。由此得名。顺便说一句,这对于计算机而言是一种极其快速的操作,因此,它在诸如密码学之类的性能至关重要的比特旋转应用中被大量使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go