我正在阅读 go 中 sort 的实现,并且在实现中有这个特定的循环func Sort(data Interface):for i := n; i > 0; i >>= 1 {
maxDepth++}排序实现:https : //golang.org/src/sort/sort.go有人可以向我解释 >>= 运算符的作用吗?编辑:这只是一个转变,然后是做作。我认为这是一个循环的事实让我心烦意乱。
2 回答
catspeake
TA贡献1111条经验 获得超0个赞
该>>
操作是向右移位运算符。
>>=
是右移运算符和赋值的简化形式:
i >>= 1
它与以下内容相同:
tmp := i >> 1 i = tmp
这与(无需创建新变量)相同:
i := i >> 1
蛊毒传说
TA贡献1895条经验 获得超3个赞
检查:https : //golang.org/ref/spec
left shift integer << unsigned integer right shift integer >> unsigned integer
移位运算符将左操作数移位右操作数指定的移位计数。如果左操作数是有符号整数,则它们实现算术移位,如果它是无符号整数,则它们实现逻辑移位。班次计数没有上限。移位的行为就像左操作数被移位 n 次,移位计数为 n。因此,x << 1 与 x*2 相同,x >> 1 与 x/2 相同,但向负无穷大截断。
- 2 回答
- 0 关注
- 236 浏览
添加回答
举报
0/150
提交
取消