[英]What does the >>= operator do
我正在閱讀 go 中 sort 的實現,並且在func Sort(data Interface)
的實現中有這個特定的循環:
for i := n; i > 0; i >>= 1 {
maxDepth++
}
排序實現: https : //golang.org/src/sort/sort.go
有人可以向我解釋 >>= 運算符的作用嗎?
編輯:這只是一個轉變,然后是做作。 我認為這是一個循環的事實讓我心煩意亂。
檢查: 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 相同,但向負無窮大截斷。
類似問題:
>>
運算符是右移運算符。
>>=
是右移運算符和賦值的簡化形式:
i >>= 1
它與以下內容相同:
tmp := i >> 1
i = tmp
這與(無需創建新變量)相同:
i := i >> 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.