JAVA位运算符示例详解:与&、或|、异或^、非~、左移<<、右移>>、无符号右移>>>
对比表
位运算符用于整型操作数与结果数,基于其二进制编码进行运算
位运算符 | 基于二进制编码的运算方式 |
---|
& | 二进制位逐位进行与&运算,仅1&1结果位1,其余为0 |
| | 二进制位逐位进行或|运算,仅0|0结果为0,其余为1 |
^ | 二进制位逐位进行异或^运算 |
~ | 各二进制码按补码位逐位取反(~只有右侧一个操作数) |
<< | 将左侧操作数的二进制码 左移 右侧操作数数值个(表示几个)位数,高位丢弃,空位补0 |
>> | 将左侧操作数的二进制码 右移 右侧操作数数值个(表示几个)位数,低位丢弃,高位原先是1补1,原先是0补0 |
>>> | 将左侧操作数的二进制码 右移 右侧操作数数值个(表示几个)位数,低位丢弃,高位永远补0 |
与
class BitAnd{
public static void main(String[] args){
int a = 12;
int b = 5;
System.out.println("a & b :" + (a & b));
}
}
或
class BitOr{
public static void main(String[] args){
int a = 12;
int b = 5;
System.out.println("a | b :" + (a | b));
}
}
异或
class BitXor{
public static void main(String[] args){
int a = 12;
int b = 5;
System.out.println("a ^ b :" + (a ^ b));
}
}
非
class BitNot{
public static void main(String[] args){
int a = 12;
int b = 5;
System.out.println(" ~a :" + (~a));
}
}
左移
class BitMove{
public static void main(String[] args){
int i = 88;
int j;
j = i << 2;
System.out.println("i << 2 = " + j);
}
}
右移
class BitMove{
public static void main(String[] args){
int i = 88;
int j;
j = i >> 2;
System.out.println("i >> 2 = " + j);
}
}
无符号右移
class BitMove{
public static void main(String[] args){
int i = 88;
int j;
j = i >>> 2;
System.out.println("i >>> 2 = " + j);
}
}
class BitMove{
public static void main(String[] args){
int i = -88;
int j;
j = i >>> 2;
System.out.println("i >>> 2 = " + j);
}
}