java 位運算

1. 左移(<<)

0000 0000 0000 0000 0000 0000 0000 0101
然后左移2位后,低位補0:
0000 0000 0000 0000 0000 0000 0001 0100
換算成10進制為20
System.out.println(5 << 2);// 運行結果是20

2.右移(>>)

(右移跟符號有關, 正數(shù)左邊補零,負數(shù)補1)
整數(shù):
0000 0000 0000 0000 0000 0000 0000 0101
然后右移2位,高位補0:
0000 0000 0000 0000 0000 0000 0000 0001
System.out.println(5 >> 2);// 運行結果是1
負數(shù):
11111111111111111111111111111011(-5)
右移2位后為:
11111111111111111111111111111110
System.out.println(-5>>2);//運行結果為-2

3.無符號右移(>>>)高位補0

例如: -5換算成二進制后為:0101 取反加1為1011
1111 1111 1111 1111 1111 1111 1111 1011
我們分別對5進行右移3位、 -5進行右移3位和無符號右移3位:
System.out.println(5 >> 3);// 結果是0
System.out.println(-5 >> 3);// 結果是-1
System.out.println(-5 >>> 3);// 結果是536870911

4.位與( & )

位與:第一個操作數(shù)的第n位于第二個操作數(shù)的第n位如果都是1,那么結果的第n為也為1,否則為0
System.out.println(5 & 3);// 結果為1
System.out.println(4 & 1);// 結果為0

5.位或( | )

第一個操作數(shù)的第n位于第二個操作數(shù)的第n位 只要有一個是1,那么結果的第n為也為1,否則為0
System.out.println(5 | 3);// 結果為7

6.位異或( ^ )

第一個操作數(shù)的第n位于第二個操作數(shù)的第n位 相反,那么結果的第n為也為1,否則為0
System.out.println(5 ^ 3);//結果為6

7.位非( ~ )

操作數(shù)的第n位為1,那么結果的第n位為0,反之。
System.out.println(~5);// 結果為-6

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容