1. 程式人生 > 實用技巧 >位運算子

位運算子

1、&:與運算子

二進位制比較,都為1則為1,否則為0

0=非=false,1=是=true

& 類比 &&,當&&的所有條件都滿足是才為true,故推到出上述結果。

2、|:或運算子

二進位制比較,只要有一個為1就是1,否則為0

與&類似

3、~:非運算子

二進位制結果倒置,為0則1,1則0;

類比!

4、^:異或運算子

二進位制比較,相同為0,不同為1

類比!=

5、<<:左移運算子

二進位制,左移位數,低位補0

6、>>:右移運算子

二進位制,右移位數

值為正,高位補0

值為負,高位補1

7、>>>:右移運算子

二進位制,右移位數,無論正負高位都補0

 1 public static void main(String[] args) throws InterruptedException {
 2     // 11 1110 0111
 3     System.out.println(Integer.toBinaryString(999));
 4     // 1111 1111 1111 1111 1111 1100 0001 1001
 5     System.out.println(Integer.toBinaryString(-999));
 6     // 00 0001 1111
 7     System.out.println(Integer.toBinaryString(999 >>> 5));
8 // 0000 0111 1111 1111 1111 1111 1110 0000 9 System.out.println(Integer.toBinaryString(-999 >>> 5)); 10 // 1 1111 0011 1000 0000 11 System.out.println(Integer.toBinaryString(999 << 7)); 12 // 1111 1111 1111 1110 0000 1100 1000 0000 13 System.out.println(Integer.toBinaryString(-999 << 7)); 14
// 0 0011 1110 0111 15 System.out.println(Integer.toBinaryString(999 >> 3)); 16 // 1111 1111 1111 1111 1111 1111 1000 0011 17 System.out.println(Integer.toBinaryString(-999 >> 3)); 18 }