java移位元運算

來源:互聯網
上載者:User

標籤:情況   演算法   使用   padding   add   負數   位元運算   div   處理   

     移位元運算符操作的對象就是二進位的位,可以單獨用移位元運算符來處理int型整數。

 運算子       含義       例子      
<< 左移運算子,將運算子左邊的對象向左移動運算子右邊指定的位元(在低位補0) x<<3
>> "有符號"右移運算 符,將運算子左邊的對象向右移動運算子右邊指定的位元。使用符號擴充機制,也就是說,如果值為正,則在高位補0,如果值為負,則在高位補1. x>>3
>>> "無符號"右移運算 符,將運算子左邊的對象向右移動運算子右邊指定的位元。採用0擴充機制,也就是說,無論值的正負,都在高位補0. x>>>3

  在java中,byte,short,long 在移位元運算時,先將各自類型轉換成int,轉換成二進位計算後,在轉換成對應的類型。

  如: 3<<3 = 0000 0011 * 2^3 = 0001 1000 = 24  ,即 向左移動三位,低位補0

     24 >> 3 = 0001 1000 / 2^3  = 0000 0011 = 3, 即 向右移動三位,高位補0  

    x<<y 相當於 x*2y ;x>>y相當於x/2y

      從計算速度上講,移位元運算要比算術運算快。
      如果x是負數,那麼x>>>3沒有什麼算術意義,只有邏輯意義。

 

  在 java 中,int 類型的資料長度為 32 位,如果將 int 類型左移或者右移大於或等於 32 位時,並不會像預計的那樣將資料全部填充為1或0。java 的處理方式是:當剛好為資料長度的整數倍時,即32、64······,資料保持原來不變;其他情況下移動除以 32 餘數的長度。同理 long 類型資料以 64 為變化基準。 
在實際應用中,需要特別注意這點,當然也可以巧用此特性實現一些特殊演算法的設計。

java移位元運算

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.