Go 中的 << 和 >> 运算符:左移和右移
大家好!我刚开始学习 Go,遇到了 `<<` 和 `>>` 运算符。文档说它们是移位运算符,但我不太理解它们在实际中是如何工作的。
下面是我写的一个代码示例:
```go
package main
import "fmt"
func main() {
x := 4
y := x << 2
z := x >> 1
fmt.Println(y, z) // 输出:16 2
}
```
我原本以为 `x << 2` 会得到 8(4 * 2),而 `x >> 1` 会得到 2(4 / 2)。结果 16 和 2 让我困惑。为什么左移 2 位是乘以 4 而不是乘以 2?这些运算符到底是什么意思?
另外,我还看到在定义常量时使用了 `1 << iota` 这种用法。你能解释一下这是如何工作的吗?我试图理解位运算,但在二进制系统上感到困惑。如果能用俄语详细解释并举例,我将非常感激,因为英文文章我不能完全理解。