在Java中,位運算符是對二進位位進行操作的運算符。位運算符可用於位操作,位操作可以用於優化計算機程序的處理速度。
一、位運算符的種類
Java中共有6個位運算符:
- & 按位與:對兩個數的二進位進行按位與操作,只有都為1時,結果才為1。
- | 按位或:對兩個數的二進位進行按位或操作,只要有一個為1時,結果就為1。
- ^ 按位異或:對兩個數的二進位進行按位異或操作,不同為1,相同為0。
- ~ 按位取反:對一個數的二進位進行按位取反,0變為1,1變為0。
- > 右移:將一個數的二進位按照指定位數向右移動,超出部分捨棄,空位以符號位補位。
- << 左移:將一個數的二進位按照指定位數向左移動,超出部分捨棄,空位補0。
二、位運算符的作用
位運算符常用於以下場景:
- 將整數轉換為二進位或十六進位
- 對整數進行快速除法或乘法計算
- 對數字的某些位進行操作
int num = 10; //輸出二進位形式 System.out.println(Integer.toBinaryString(num)); //輸出十六進位形式 System.out.println(Integer.toHexString(num));
//等同於num*2^3 int result = num << 3; //等同於num/2^3 int result = num >> 3;
//將num的第2位設置為1 int result = num | 0b10; //將num的第4位設為0 int result = num & ~0b1000;
三、注意事項
位運算符操作的對象必須是整型(byte、short、int、long),不能用於浮點型。
對於<>運算,若左操作數是int類型,則移動1~31位的結果為int類型;若左操作數是long類型,則移動1~63位的結果為long類型。
對於>>>運算(無符號位移運算),一律將空缺處補0,即使最左邊一位是1也不例外(因此Java不支持無符號整數類型)。
四、實例演示
public class BitwiseOperatorDemo { public static void main(String[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a <> 2; /* 15 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 15 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }
原創文章,作者:PNAH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132814.html