Java定義的位元運算會套用於整數型別,如int,long,short,char 和byte等。
位元運算子主要用來對操作數二進位的位元進行運算,位元運算表示以每個二進位位元進行計算,其操作數和運算結果都是整數值,若運算結果為負數,則會以補碼表示。
Java 語言中的位元運算子分為位元邏輯運算子和位移運算子兩類。
位元與運算:
以位元與運算對兩個整數資料a、b位元進行運算,運算結果是一個整數資料c。運算法則為:若a、b兩個資料對應位元都是1,則c的該位是1,否則為0。
例如:
a:0 1 0 1 0 0 1 1
b:0 0 1 1 1 0 1 0
c:0 0 0 1 0 0 1 0
按位或運算:
以位元或運算對兩個整數資料a、b位元進行運算,運算結果是一個整數資料c。運算法則為:若a、b兩個資料對應位元都是0,則c的該位是0,否則為1。
例如:
a:0 1 0 1 0 0 1 1
b:0 0 1 1 1 0 1 0
c:0 1 1 1 1 0 1 1
位元非運算:
以位元非運算對一個整數資料a位元進行運算,運算結果是一個整數資料c。運算法則為:如果a這個資料對應位是0,則c的該位是1,否則是0。
例如:
a:0 1 0 1 0 0 1 1
c:1 0 1 0 1 1 0 0
位元異或運算:
以位異或運算對兩個整數資料a、b位元進行運算,運算結果是一個整數資料c。運算法則為:若a、b兩個資料對應位元相同,則c的該位為0,否則為1。
例如:
a:0 1 0 1 0 0 1 1
b:0 0 1 1 1 0 1 0
c:0 1 1 0 1 0 0 1
位元右移運算:
位元右移運算的運算元則為:以二進位形式把所有的數字向右移動對應的位數,低位移出(捨棄),高位的空位補零。
例如:將整數83 向右位移1 位
移位前:0 1 0 1 0 0 1 1
移位後:0 0 1 0 1 0 0 1
位元左移運算:
位元左移運算的運算元則為:以二進位形式把所有的數字向左移動對應的位數,高位移出(捨棄),低位的空位補零。
例如:將整數83 向左位移1 位
移位前:0 1 0 1 0 0 1 1
移位後:1 0 1 0 0 1 1 0
實例:
publicclassMain{publicstaticvoidmain(String[]args){inta=83;/*83=01010011*/intb=58;/*58=00111010*/intc=0;c=a&b;/*18=00010010*/ystem. .println(a&b=+c);c=a|b;/*123=01111011*/System.out.println(a|b=+c);c=~a;/*01010011取反後為10101100, 10101100的補碼為11010100,-84=11010100*/System.out.println(~a=+c);c=a^b;/*105=01101001*/System.out.println(a^b=+ c);c=a>>1;/*41=00101001*/System.out.println(a>>2=+c);c=a<<1;/*166=10100110*/System.out. println(a<<2=+c);}}
運行結果如下:
a&b=18a|b=123~a=-84a^b=105a>>2=41a<<2=166