按位与 & 按位或 | 按位异或 ^ 按位取反 ~
按位与 &
1 将两个整数的二进制表示按位进行与运算,只有当相应的二进制位都为1,结果才为1,否则结果为0
int a = 32;
int b = 25;
System.out.println(a & b)
a的二进制: 00100000
b的二进制: 00011001
----------------------
& 00000000
2. 拿着这个数字和1进行按位与,如果结果是1,则表示该数字为奇数
按位或 |
1 将两个整数的二进制表示按位进行或运算,只有当相应的二进制位都为0时,结果才为0,否则结果为1
int a = 32;
int b = 25;
System.out.println(a | b)
a的二进制: 00100000
b的二进制: 00011001
----------------------
& 00111001
2. 可以将某个二进制位设置为1
按位异或 ^
1 将两个整数的二进制表示按位进行异或运算,只有当相应的二进制位不同时,结果才为1,否则结果为0
int a = 32;
int b = 25;
System.out.println(a ^ b)
a的二进制: 00100000
b的二进制: 00011001
----------------------
& 00111001
2. 按位异或具有自反性: a ^ b ^ b = a
按位取反 ~
1 将整数的二进制表示按位进行取反运算,即0变1,1变0
int a = 32;
System.out.println(~a)
a的二进制: 00100000
----------------------
~11011111

浙公网安备 33010602011771号