>> =运算符在golang中做什么?

时间:2015-10-04 12:14:49

标签: go

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

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

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

有人可以向我解释一下>> =运算符吗?

编辑:这只是一个转变,然后是一个做作。我认为它在一个循环中的事实让我大吃一惊。

2 个答案:

答案 0 :(得分:4)

检查: https://golang.org/ref/spec

left shift             integer << unsigned integer

right shift            integer >> unsigned integer
  

移位运算符将左操作数移位移位计数   由右操作数指定。如果,他们实施算术转移   左操作数是有符号整数,如果是,则逻辑移位   无符号整数。班次计数没有上限。转移   表现为好像左操作数被移位n次1   数量n。结果,x <&lt;&lt; 1与x * 2和x>&gt;相同。 1是   与x / 2相同但截断为负无穷大。

类似的问题:

Go << and >> operators

double less operator in Go Tour 37

答案 1 :(得分:3)

>>运算符是右移运算符。

>>=是右移分配的合同形式。

i >>= 1

相同
tmp := i >> 1
i = tmp

这是相同的(没有创建新变量的需要)

i := i >> 1