位运算符
进制表示
// 16 进制 0x开头
public void bit2() {
// 0000
System.out.println(0x0); // 16^0 * 0 = 0
// 0001
System.out.println(0x1); // 16^0 * 1 = 1
// 1111
System.out.println(0xF); // 16^0 * 15 = 15
}
按位运算符
0看做false,1看做true
- 按位与 &:都是1为1,否则为0
- 按位或 |:有一个1则为1,否则为0
- 按位异或 ^:相同是0,不同是1
- 按位取反 ~:0变1,1变0
public void bit1() {
// 1111 1000
int a = 0xF8;
// 1111 0100
int b = 0xF4;
// 1111 1111
int c = 0xFF;
System.out.println(a & b); // 1111 0000
System.out.println(a | b); // 1111 1100
System.out.println(a ^ b); // 0000 1100
System.out.println(~c); // 0000 0000
}
位移运算符
>>
:符号位不变右移,符号位后整数补0,负数补1>>>
:无符号右移,符号位一起右移,左边补0<<
:右边补0