簡體   English   中英

>>= 運算符有什么作用

[英]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 相同,但向負無窮大截斷。

類似問題:

轉到 << 和 >> 運算符

Go Tour 37 中的雙減運算符

>>運算符是右移運算符。

>>=是右移運算符賦值的簡化形式:

i >>= 1

它與以下內容相同:

tmp := i >> 1
i = tmp

這與(無需創建新變量)相同:

i := i >> 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM