一尘不染

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

go

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

const (
    Big = 1<<100
    Small = Big>>99
)

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

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


阅读 429

收藏
2020-07-02

共1个答案

一尘不染

它们是按位移位运算符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中,右移是无符号值的逻辑移位,而有符号值的算术移位。逻辑移位总是四舍五入,而算术移位总是四舍五入,即-∞。

2020-07-02