0
爲什麼Java中的表達式(-1 >>> 32)
按預期評估爲-1
而不是0
?該>>>
-Shift運營商應填寫前述0,所以結果應該具有的所有位設置爲0。(-1 >>> 32)== -1?
這是奇怪的,因爲它打破了>>>
語義:例如(-1 >>> x)
的前x位對所有0 <= x <= 31
設置爲0。唯一的(意外的)例外是32.
這是故意的行爲,錯誤還是(過度動機的)編譯器優化?
我使用表達式~(-1 >>> x)
來擴展一個cidr-netmask到它的32位等價物,但是看起來,必須單獨處理/ 32-掩碼。
thx爲您的答覆和抱歉發佈重複的問題。這解釋得很好。 – paranoid