位運算和移位運算是 Java 中常用的運算符,用于對數字的位進行操作。下面是位運算與移位運算的詳細解釋:
按位與(&):對兩個數的二進制進行按位與操作,只有兩個操作數對應位都為1時,結果位才為1,否則為0。
按位或(|):對兩個數的二進制進行按位或操作,只有兩個操作數對應位都為0時,結果位才為0,否則為1。
按位異或(^):對兩個數的二進制進行按位異或操作,只有兩個操作數對應位不同時,結果位才為1,否則為0。
按位取反(~):對一個數的二進制進行按位取反操作,將0變為1,將1變為0。
左移(<<):將一個數的二進制表示向左移動指定的位數,右側補0,相當于將原數乘以2的移動位數次方。
右移(>>):將一個數的二進制表示向右移動指定的位數,左側補上符號位(正數補0,負數補1),相當于將原數除以2的移動位數次方。
無符號右移(>>>):將一個數的二進制表示向右移動指定的位數,左側補0,不考慮符號位。
位運算和移位運算常用于處理二進制數據,能夠提高效率和節省空間。例如,可以使用位運算判斷一個數是否為奇數,使用移位運算進行乘除法計算。此外,位運算和移位運算還可以用于對字節、整數等數據進行位操作和位存儲。
以下是一些位運算與移位運算的示例:
int a = 5;
int b = 3;
int c = a & b; // 1 (000001)
int d = a | b; // 7 (000111)
int e = a ^ b; // 6 (000110)
int f = ~a; // -6 (111110)
int g = a << 2; // 20 (00010100)
int h = a >> 1; // 2 (00000010)
int i = a >>> 1; // 2 (00000010)
需要注意的是,位運算和移位運算只能作用于整數類型(byte、short、int、long),不能作用于浮點數類型(float、double)。