按位与& 两个二进制数字都是1 取1否则取0
按位或I 两个二进制数字都是0取0否则取1
按位取反~如果该位为0则1 ,为1取0
按位异或 ^ 相同为零相反为1
移位运算符
有三个: <<, >> ,>>>,都是二元运算符,且都是按照二进制比特位来运算的。
1. 左移 <<: 最左侧位不要了, 最右侧补 0.
int a = 0x10;
System.out.printf("%x\n", a << 1);
// 运行结果(注意, 是按十六进制打印的)
20
. 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
nt a = 0x10;
System.out.printf("%x\n", a >> 1);
// 运行结果(注意, 是按十六进制打印的)
8
int b = 0xffff0000;
System.out.printf("%x\n", b >> 1);
// 运行结果(注意, 是按十六进制打印的)
ffff8000
. 无符号右移 >>>: 最右侧位不要了, 最左侧补 0
int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff