Java 位運算符

https://java-er.com/blog/java-shit-operation/

Java位運算符(bitwise operators),應用于整數(shù)類型(int),長整型(long),短整型(short),字符型(char),和字節(jié)型(byte)。

運算符作用在所有的位上,并且按位運算。假設a = 5,b = 12;它們的二進制格式表示將如下:

A = 0101

B = 1100

-----------------

A&B = 0100

A | B = 1101

A ^ B = 1001

~A= 1010

操作符描述例子

&如果相對應位都是1,則結果為1,否則為0a & b = 4 即100

|如果相對應位都是 0,則結果為 0,否則為 1a | b = 13 即1101

^如果相對應位值相同,則結果為0,否則為1a ^ b = 9 即1001

?按位取反運算符翻轉操作數(shù)的每一位,即0變成1,1變成0。~a = -6 即1010

<<?按位左移運算符。左操作數(shù)按位左移右操作數(shù)指定的位數(shù)。a << 2 = 20 即10100

>>?按位右移運算符。左操作數(shù)按位右移右操作數(shù)指定的位數(shù)。a >> 2 = 1 即1

>>>?按位右移補零操作符。左操作數(shù)的值按右操作數(shù)指定的位數(shù)右移,移動得到的空位以零填充。a >>> 2 = 1 即1

位移說明

A << 2 表示A 向左邊移動2位

A = 0101

計算機的前面其實還有很多0

所以 表示如下

位移前:A? = 0000 0101

位移后:A? = 0001 0100

當A >> 2 向右邊移動的時候,后面沒有空間了。所以砍掉

位移前:A? = 0000 0101

位移后:A? = 0000 0001

Java測試代碼

int a = 5;

int b = 12;

System.out.println("a 的二進制:" + Integer.toBinaryString(a));

System.out.println("b 的二進制:" + Integer.toBinaryString(b));


int c = 0;

c = a & b;? ? ?

System.out.println("a & b = " + c +" 即"+Integer.toBinaryString(c));


c = a | b;? ? ?

System.out.println("a | b = " + c +" 即"+Integer.toBinaryString(c));


c = a ^ b;? ? ?

System.out.println("a ^ b = " + c +" 即"+Integer.toBinaryString(c));


c = ~a;? ? ? ? ?

System.out.println("~a = " + c +" 即"+Integer.toBinaryString(c));


c = a << 2;? ?

System.out.println("a << 2 = " + c +" 即"+Integer.toBinaryString(c));


c = a >> 2;? ?

System.out.println("a >> 2? = " + c+" 即"+Integer.toBinaryString(c) );


c = a >>> 2;? ?

System.out.println("a >>> 2 = " + c+" 即"+Integer.toBinaryString(c) );

輸出

a 的二進制:101

b 的二進制:1100

a & b = 4 即100

a | b = 13 即1101

a ^ b = 9 即1001

~a = -6 即11111111111111111111111111111010

a << 2 = 20 即10100

a >> 2? = 1 即1

a >>> 2 = 1 即1

復合位賦值運算符

運算符含義實例結果

&=按位與賦值a &= b等價于?a=a & b

|=按位或賦值a |= b等價于?a=a | b

^=按位異或賦值a ^= b等價于?a=a ^?b

-=按位取反賦值a?~= b等價于?a=a ~ b

?=按位左移賦值a ?= b等價于?a=a ? b

?=按位右移賦值a??= b等價于?a=a ? b

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容