在游游练习#17中,我不明白这个表达式1 << uint(i)
package main
import "fmt"
func main() {
pow := make([]int, 10)
for i := range pow {
pow[i] = 1 << uint(i)
}
for _, value := range pow {
fmt.Printf("%d\n", value)
}
}这个接线员的目的是什么?<<
程序输出:
1
2
4
8
16
32
64
128
256
512
Program exited.发布于 2014-10-10 15:55:23
它是二进制移位算子。具体来说,这是一个左移(因为他们指向左边)。
它所做的就是移动一个数字的二进制表示中的所有位.左边。
例如。1的二进制表示形式(每个字节8位的安全假设)是:00000001。应用左移位产生:
00000001
<<
00000010它是2的二进制表示。再次应用它会产生:
00000010
<<
00000100这是4的二进制表示。诸若此类。
相反,右移>>则相反,因此将>>应用于值4会产生:
00000100
>>
00000010.2.
通过使用右Shift操作符,可以将旅游更改为倒计时:
pow[i] = 512 >> uint(i)https://stackoverflow.com/questions/26294372
复制相似问题