我正在阅读sort in go的实现,并且在func Sort(data Interface)
的实现中存在这个特定的循环:
for i := n; i > 0; i >>= 1 {
maxDepth++
}
排序实施:https://golang.org/src/sort/sort.go
有人可以向我解释一下>> =运算符吗?
编辑:这只是一个转变,然后是一个做作。我认为它在一个循环中的事实让我大吃一惊。
答案 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相同但截断为负无穷大。
类似的问题:
答案 1 :(得分:3)
>>
运算符是右移运算符。
>>=
是右移和分配的合同形式。
i >>= 1
与
相同tmp := i >> 1
i = tmp
这是相同的(没有创建新变量的需要)
i := i >> 1