问题描述
它们是按位移位运算符。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中,右移是无符号值的逻辑移位,而有符号值的算术移位。逻辑移位总是四舍五入,而算术移位总是四舍五入,即-∞。
解决方法
我正在寻找有关Google Go语言的信息。在“ A Go of Go”中,他们具有以下代码:
const (
Big = 1<<100
Small = Big>>99
)
但是什么<<
和>>
意味着什么呢?
您可以在http://tour.golang.org/#14上查看所有代码