>>= 运算符有什么作用

我正在阅读 go 中 sort 的实现,并且在实现中有这个特定的循环func Sort(data Interface)

for i := n; i > 0; i >>= 1 {
    maxDepth++}

排序实现:https : //golang.org/src/sort/sort.go

有人可以向我解释 >>= 运算符的作用吗?

编辑:这只是一个转变,然后是做作。我认为这是一个循环的事实让我心烦意乱。


隔江千里
浏览 237回答 2
2回答

catspeake

该>>操作是向右移位运算符。>>=是右移运算符和赋值的简化形式:i >>= 1它与以下内容相同:tmp := i >> 1 i = tmp这与(无需创建新变量)相同:i := i >> 1

蛊毒传说

检查:https&nbsp;:&nbsp;//golang.org/ref/specleft&nbsp;shift&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;<<&nbsp;unsigned&nbsp;integer right&nbsp;shift&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;>>&nbsp;unsigned&nbsp;integer移位运算符将左操作数移位右操作数指定的移位计数。如果左操作数是有符号整数,则它们实现算术移位,如果它是无符号整数,则它们实现逻辑移位。班次计数没有上限。移位的行为就像左操作数被移位 n 次,移位计数为 n。因此,x << 1 与 x*2 相同,x >> 1 与 x/2 相同,但向负无穷大截断。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go