首頁  >  文章  >  Java  >  Java中的位元運算子、移位運算詳細介紹

Java中的位元運算子、移位運算詳細介紹

高洛峰
高洛峰原創
2016-12-16 16:59:011688瀏覽

一.位運算

Java中有4個位元運算,它們的運算規則如下:

(1)按位與(&) :兩位全為1,結果為1,否則為0;

( 2)位元或(|) :兩位有一個為1,結果為1,否則為0;

(3)按位取反(~):0 變1, 1變0;


(4 )位元異或(^):兩位,如果相同,結果為0;如果不同,結果為1;

注意:

(1)位元運算中的符號位(最高位)也跟著變;

(2)位元運算子與邏輯運算子(邏輯與&&、邏輯或||、邏輯非! )有點相似。但是,邏輯運算子只能操作boolean變數

(也就是左右兩邊的值都是boolean值);


二.位元運算應用


(1) ~5 = ?

a) 5的補碼為:

00000000 00000000 00000000 00000101

b) 5的按位取反(~)為:

111111111 1111111031111031110注意:因為高位數是1(負數),所以要將該補碼轉換為原碼;如果高位數是0(正數)的話, 就不用將補碼轉為原碼,因為正數的原碼、反碼、補碼都一樣。

c) 將此負數的補碼轉為反碼:

1111111 11111111 11111111 1111001

d) 將此負數位轉為負數00000 00000110


e) 將二進位原碼轉換為十進位:

10000000 00000000 00000000 00000110 = 0 * 2^0 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 數為負數為負數)


三. 移位運算:


Java中有3個移位運算子。


(1) 算術右移(>>): 低位溢出,符號位不變,並用符號位補溢出的高位;

例如:a >> b :a是要移動的數,b是要移動的位數,下面同理;


(2) 算術左移(

(3) 邏輯右移(>>>): 低位溢出,高位補0;注意:邏輯右移(>>>)中的符號位(最高位)也跟著變;


四. 注意點:

位運算與移位運算,都是使用的二進位的補碼,進行操作的,切忌!

更多Java中的位元運算符、移位運算詳細介紹相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn