JAVA-位运算
按位与(&)
规则:对应位都为 1,结果才为 1,否则为 0。
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int result = a & b; // 结果:0001,即 1
System.out.println(result); // 输出:1
按位或(|)
规则:对应位只要有一个为 1,结果为 1,否则为 0。
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int result = a | b; // 结果:0111,即 7
System.out.println(result); // 输出:7
按位异或(^)
规则:对应位不同,结果为 1,相同为 0。
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int result = a ^ b; // 结果:0110,即 6
System.out.println(result); // 输出:6
按位取反(~)
规则:0 变 1,1 变 0
int a = 5; // 二进制:0000 0101
int result = ~a; // 结果:1111 1010,即 -6
System.out.println(result); // 输出:-6
左移位(<<)
规则:将数的二进制位左移指定的位数,右侧补 0。
int a = 5; // 二进制:0000 0101
int result = a << 2; // 左移两位,结果:0001 0100,即 20
System.out.println(result); // 输出:20
右移位(>>)
规则:将数的二进制位右移指定的位数,左侧补符号位(正数补 0,负数补 1)。
int a = -20; // 二进制表示:1111 1110 1100
int result = a >> 2; // 结果:1111 1111 1011,即 -5
System.out.println(result); // 输出:-5
无符号右移位(>>>)
规则:将数的二进制位右移指定的位数,左侧始终补 0。
int a = -20;
int result = a >>> 2; // 结果:1073741819
System.out.println(result); // 输出:1073741819