Golang中b := a << 1是什么意思?
Golang中b := a << 1是什么意思?
a := 42
fmt.Printf("%d\t%b\t%#x\n", a, a, a)
b := a << 1
fmt.Printf("%d\t%b\t%#x\n", b, b, b)
2 回复
这意味着左移相当于乘以2,而右移则相当于除以2……! 假设 4 >> 1 的结果是 2,而 4 << 1 的结果是 8。左移一位等同于乘以2,右移一位等同于除以2,在你的例子中,假设是8位 00101010 << 1 从左边移除,并从右边插入,结果 = 01010100
更多关于Golang中b := a << 1是什么意思?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个位左移操作。a << 1 将变量 a 的所有二进制位向左移动1位,相当于乘以2。
示例代码:
package main
import "fmt"
func main() {
a := 42 // 十进制42 = 二进制101010
fmt.Printf("原始值: %d\t二进制: %b\t十六进制: %#x\n", a, a, a)
b := a << 1 // 左移1位:101010 -> 1010100
fmt.Printf("左移后: %d\t二进制: %b\t十六进制: %#x\n", b, b, b)
// 验证相当于乘以2
c := a * 2
fmt.Printf("乘以2: %d\t二进制: %b\t十六进制: %#x\n", c, c, c)
// 更多示例
x := 1
fmt.Printf("\n1左移不同位数的效果:\n")
for i := 0; i <= 5; i++ {
result := x << i
fmt.Printf("1 << %d = %d (二进制: %b)\n", i, result, result)
}
}
输出:
原始值: 42 二进制: 101010 十六进制: 0x2a
左移后: 84 二进制: 1010100 十六进制: 0x54
乘以2: 84 二进制: 1010100 十六进制: 0x54
1左移不同位数的效果:
1 << 0 = 1 (二进制: 1)
1 << 1 = 2 (二进制: 10)
1 << 2 = 4 (二进制: 100)
1 << 3 = 8 (二进制: 1000)
1 << 4 = 16 (二进制: 10000)
1 << 5 = 32 (二进制: 100000)
关键点:
<<是Go语言的左移位运算符a << n将a的二进制表示向左移动n位- 每左移1位相当于乘以2(对于无溢出情况)
- 右补0,左侧超出的位被丢弃
- 适用于所有整数类型(int, uint, int8, uint8等)

