1. 程式人生 > >java 位運算(經常用到)

java 位運算(經常用到)

1.表示方法:  

在Java語言中,二進位制數使用補碼錶示,最高位為符號位,正數的符號位為0,負數為1。補碼的表示需要滿足如下要求。  

(1)正數的最高位為0,其餘各位代表數值本身(二進位制數)。  

(2)對於負數,通過對該數絕對值的補碼按位取反,再對整個數加1。 

2、具體演算法符及運算規則

// 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、右移( >> ) 高位補符號位 // 0000 0000 0000 0000 0000 0000 0000 0101 然後右移2位,高位補0: // 0000 0000 0000 0000 0000 0000 0000 0001 System.out.println(5 >> 2);// 執行結果是1 // 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、位與( & ) // 位與:第一個運算元的的第n位於第二個運算元的第n位如果都是1, 那麼結果的第n為也為1,否則為0 System.out.println(5 & 3); // 結果為1 System.out.println(4 & 1);// 結果為0 // 5、位或( | ) // 第一個運算元的的第n位於第二個運算元的第n位 只要有一個是1,那麼結果的第n為也為1,否則為0 System.out.println(5 | 3);// 結果為7 // 6、位異或( ^ ) // 第一個運算元的的第n位於第二個運算元的第n位 相反,那麼結果的第n為也為1,否則為0 System.out.println(5 ^ 3);//結果為6 // 7、位非( ~ ) // 運算元的第n位為1,那麼結果的第n位為0,反之。 System.out.println(~5);// 結果為-6