較為簡單の位運(yùn)算符:
& 位與運(yùn)算
| 位或運(yùn)算
^ 位異或運(yùn)算
~ 位取反運(yùn)算
舉例:
class OperatorDemo {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(3 & 4);
System.out.println(3 | 4);
System.out.println(3 ^ 4);
System.out.println(~3);
}
}
要做位運(yùn)算倔喂,首先要把數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制
3的二進(jìn)制:11
00000000 00000000 00000000 00000011
4的二進(jìn)制:100
00000000 00000000 00000000 00000100
&位與運(yùn)算:有0則0焕刮。
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000000
結(jié)果是:0
|位或運(yùn)算:有1則1轿塔。
00000000 00000000 00000000 00000011
|00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000111
結(jié)果是:7
^位異或運(yùn)算:相同則0,不同則1(有點(diǎn)像男女關(guān)系)蛾坯。
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000111
結(jié)果是:7
特點(diǎn):一個數(shù)據(jù)對另一個數(shù)據(jù)位異或兩次光酣,該數(shù)本身不變:a^b^a = b;
~按位取反運(yùn)算符:0變1,1變0
00000000 00000000 00000000 00000011
~11111111 11111111 11111111 11111100 (補(bǔ)碼)
補(bǔ)碼:11111111 11111111 11111111 11111100
反碼:11111111 11111111 11111111 11111011
原碼:10000000 00000000 00000000 00000100
結(jié)果是:-4
.
.