java位運(yùn)算符包括
&(與) AND
|(或) OR
^(異或) XOR
~(非) NOT
位移運(yùn)算符包括
>>(右移)
<<(左移)
>>>(右移,左邊空出的位以0填充)
顧名思義,位運(yùn)算符用于位運(yùn)算,那就只能對整型或者字符型進(jìn)行運(yùn)算。而除了~(非)是一元運(yùn)算符之外其他的都為二元運(yùn)算符。
所有位運(yùn)算都會把值轉(zhuǎn)為二進(jìn)制進(jìn)行運(yùn)算
&(與) 運(yùn)算規(guī)則:0&0=0 0&1=0 1&0=0 1&1=1
即:兩位同時為1時,結(jié)果為1,否則為0
Java代碼

- int a=(3&5);
- System.out.println(a);
- System.out.println(Integer.toBinaryString(3));
- System.out.println(Integer.toBinaryString(5));
結(jié)果打印為
1
011
101
解析:3的二進(jìn)制為011,5的二進(jìn)制為101,與操作結(jié)果為001。轉(zhuǎn)為十進(jìn)制是1。
|(或) 運(yùn)算規(guī)則: 0|0=0 0|1=1 1|0=1 1|1=1
即:參加運(yùn)算的兩個對象只要有一個為1,其結(jié)果就為1
Java代碼

- int a=(3|5);
- System.out.println(a);
- System.out.println(Integer.toBinaryString(3));
- System.out.println(Integer.toBinaryString(5));
結(jié)果打印為
7
011
101
解析:3的二進(jìn)制位011,5的二進(jìn)制位101。或操作結(jié)果為111。轉(zhuǎn)為10進(jìn)制為7
^(異或) 運(yùn)算規(guī)則:1^0=0 0^1=1 1^0=1 1^1=0
即:參加運(yùn)算的兩個對象,如果兩個個相應(yīng)位為“異”(值不同),則該位結(jié)果為1,否則為0
Java代碼

- int a=(3^5);
- System.out.println(a);
- System.out.println(Integer.toBinaryString(3));
- System.out.println(Integer.toBinaryString(5));
結(jié)果打印為
6
011
101
解析:3的二進(jìn)制位011,5的二進(jìn)制位101。或操作結(jié)果為110。轉(zhuǎn)為10進(jìn)制為6
~(非)
運(yùn)算規(guī)則:~1=0 ~0=1
即:對一個二進(jìn)制數(shù)按位取反,即0變?yōu)?,1變?yōu)?
~運(yùn)算符的優(yōu)先級比算數(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和其他運(yùn)算符都高
<<(左移) 將一個運(yùn)算符對象的各二進(jìn)制位全部左移諾干位(左邊的二進(jìn)制位丟棄,右邊補(bǔ)0)
操作數(shù)每左移一位,相當(dāng)于該數(shù)乘以2
Java代碼

- int a=(3<<2);
- System.out.println(a);
- System.out.println(Integer.toBinaryString(3));
- System.out.println(Integer.toBinaryString(12));
結(jié)果打印為
12
11
1100
解析:此運(yùn)算符的意思就是把3的二進(jìn)制位全部左移兩位,右邊補(bǔ)2個0。3的二進(jìn)制位11,左移兩位后,右邊補(bǔ)2個0就是1100。1100轉(zhuǎn)為10進(jìn)制為12。
說到底左移操作就相當(dāng)于2的2次方×3。 每左移1位次方就增1
>>(右移) 將一個數(shù)的各二進(jìn)制位全部右移諾干位,正數(shù)左補(bǔ)0,負(fù)數(shù)左補(bǔ)1,右邊丟棄。
操作數(shù)每右移一位,相當(dāng)于該數(shù)除以2
Java代碼

- int a=(9>>1);
- System.out.println(a);
- System.out.println(Integer.toBinaryString(9));
- System.out.println(Integer.toBinaryString(4));
結(jié)果打印為
4
1001
100
解析:9的二進(jìn)制為1001,右移1位后,左正數(shù)補(bǔ)0,右邊丟棄。結(jié)果為 0100。轉(zhuǎn)為10進(jìn)制后為4。