1. 程式人生 > >java 位運算中移動位數超過資料長度和右移的兩種不同方式

java 位運算中移動位數超過資料長度和右移的兩種不同方式

記錄 java 位運算中的兩點注意事項:移動位數超過資料長度和右移的兩種不同方式。

int、long型別資料移動等於或超過最大位數

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

算術右移、邏輯右移、無符號右移

在 java 中左移只有一種,以0補齊低位,運算子號為 <<。而又移分為兩種:算術右移 >> 和邏輯右移 >>>,其中邏輯右移也叫作無符號右移。
邏輯右移以0補全高位,而算術右移則是根據資料的第一位決定右移後高位補全的內容,若為1則補1,否則補0。

==========================================
疑問?幫助?批評?歡迎評論 | QQ:593159978