本文參考:java移位運算符詳解html
2 << 1 // 4
至關與2*2,即將2(value)化爲2進制,再向左移移1(num)位,即: 00000010,將1向左移移1位:00000100,化爲十進制爲4。java
10 << 20
這個相比上個複雜點,但運算方法同樣。即:00001010 = 2三次方+2一次方,中的每一個1都向左移20位。 即: = 10485760code
道理和和左移差很少,只不過是反方向。將1向右移num位,其餘空位所有補0.htm
當value是整數時,這種移位方式和‘>>’是同樣的。可是當value時負數時則結果徹底相反。>>>是無論value轉換爲2進制後的正負號的,他只管移位,移位後的結果均爲整數。看個例子blog
2>>>1 // 結果爲1 -2>>>1 //結果爲2147483647
若是你和博主同樣對結果的差異感到震驚的時候,說明你忘了二進制的負數表達方式。圖片
這裏你應該知道-2 的二進制爲 111111111111111111111101,再右移後的結果可想而知。get
本次總結就到這裏,歡迎吐槽。數學