为了账号安全,请及时绑定邮箱和手机立即绑定

Go Tour 37 中的双减运算符

Go Tour 37 中的双减运算符

Go
至尊宝的传说 2021-08-23 15:46:01
在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)


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信