2023/08/26
1、按位与 &
定义:将两个操作数的二进制位进行按位与逻辑运算。
特点:和 1 相与,原二进制位不变;和 0 相与,原二进制位置0。
总结:若想将某一位置0,其余位不变,则按位与。
int main()
{
int a = 10;
int b = 12;
int c = a & b;
printf("%d\n", c); //c = 8
//0000 0000 0000 0000 0000 0000 0000 1010 -- a的二进制位
//0000 0000 0000 0000 0000 0000 0000 1100 -- b的二进制位
//0000 0000 0000 0000 0000 0000 0000 1000 -- c的二进制位
return 0;
}
2、按位或 |
定义:将两个操作数的二进制位进行按位或逻辑运算。
特点:和 1 相或,原二进制位置1;和 0 相或,原二进制位不变。
总结:若想将某二进制位置1,其余位不变,则按位或。
int main()
{
int a = 10;
int b = 12;
int c = a | b;
printf("%d\n", c); //c = 14
//0000 0000 0000 0000 0000 0000 0000 1010 -- a的二进制位
//0000 0000 0000 0000 0000 0000 0000 1100 -- b的二进制位
//0000 0000 0000 0000 0000 0000 0000 1110 -- c的二进制位
return 0;
}
3、按位异或 ^
定义:将两个操作数的二进制位进行按位异或逻辑运算。
特点:和 1 相异或,原二进制位取反;和 0 相异或,原二进制位不变。
总结:若想将某二进制位取反,其余位不变,则按位异或。
int main()
{
int a = 10;
int b = 12;
int c = a ^ b;
printf("%d\n", c); //c = 6
//0000 0000 0000 0000 0000 0000 0000 1010 -- a的二进制位
//0000 0000 0000 0000 0000 0000 0000 1100 -- b的二进制位
//0000 0000 0000 0000 0000 0000 0000 0110 -- c的二进制位
return 0;
}