在Go Tour 37我面对奇怪的表情1 << uint(i)package mainimport "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) }}运营商<<做什么的?程序得到输出:1248163264128256512Program exited.
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
它是一个二元移位运算符。具体来说,它是一个左移(因为它们指向左边)。
它的作用是将数字的二进制表示中的所有位移动...左。
例如。的1的二进制表示是(每字节8位的一个安全的假设): 00000001。应用左移产生:
00000001
<<
00000010
这是 2 的二进制表示。再次应用它会产生:
00000010
<<
00000100
..这是 4.. 的二进制表示,依此类推。
相反,右移>>则相反,因此应用>>到值 4,产生:
00000100
>>
00000010
..2.
您可以使用右移运算符将游览更改为向后计数:
pow[i] = 512 >> uint(i)
- 1 回答
- 0 关注
- 177 浏览
添加回答
举报
0/150
提交
取消