两数的二进制数全为1则为1
#两个相同的数按位与
返回相同的数
int a=6;
printf("%d",a&a);//
两数的二进制数存在1则为1
#两个相同的数字按位或
返回相同的数
int main()
{
int a = 6;
printf("%d\n", a | a);//6
return 0;
}
两数的二进制位不同为1相同为0
#两个相同的数字
返回0
int main()
{
int a = 6;
printf("%d\n", a ^ a);//0
return 0;
}
@TOP
全部为原来这个数
int main()
{
int a = 6;
printf("%d\n", a & a&a);//6
printf("%d\n", a | a)|a;//6
printf("%d\n", a ^ a^a);//6
return 0;
}
运算一次
int main()
{
int a = 6;
printf("%d\n", a & 0);//0
printf("%d\n", a | 0);//6
printf("%d\n", a ^ 0);//6
printf("%d\n", a & 0 & 0);//0
printf("%d\n", a | 0 | 0);//6
printf("%d\n", a ^ 0 ^ 0);//6
return 0;
}
int main()
{
int a = 6;//0x00000006//0110
int b = 0x55555555; //0101
printf("%d\n", a & b);//4 //0100
printf("%x\n", a | b);//0x55555557 //0111
printf("%x\n", a ^ b);//0x55555553 //0011
printf("%d\n", a & b & b);//4
printf("%x\n", a | b | b);//0x55555557
printf("%d\n", a ^ b ^ b);//6
return 0;
}
int main()
{
int a = 6;//0x00000006//0110
int b = 0xffffffff; //1111
printf("%d\n", a & b);//6//0110
printf("%d\n", a | b);//-1//1111
printf("%d\n", a ^ b);//-7//1001
printf("%d\n", a & b & b);//6
printf("%d\n", a | b | b);//-1
printf("%d\n", a ^ b ^ b);//6 两次相同
return 0;
}
&
int main()
{
int a = 6;
int b = 0;
for (int i = 0; i < 32; i++)
{
b = a & (1 << i);// 0 2 4 0 0 0相加等于原数
printf("%d ", b);
}
printf("\n", b);
for (int i = 0; i < 32; i++)
{
b = a & (1 >> i);//1>>i==0
printf("%d ", b);
}
return 0;
}
|
int main()
{
int a = 6;
int b = 0;
for (int i = 0; i < 32; i++)
{
b = a | (1 << i);
printf("%d ", b);//7 6 6 14 22 38 70 134 262 518 1030 2054 4102 8198 16390 32774 65542 131078 262150 524294 1048582 2097158 4194310 8388614 16777222 33554438 67108870 134217734 268435462 536870918 1073741830 -2147483642
}
printf("\n", b);
for (int i = 0; i < 32; i++)
{
b = a | (1 >> i);//1>>i==0
printf("%d ", b);//7 6 6 6 6 6
}
return 0;
}
^
int main()
{
int a = 6;
int b = 0;
for (int i = 0; i < 32; i++)
{
b = a ^ (1 << i);
printf("%d ", b);//7 4 2 14 22 38 70 134 262 518 1030 2054 4102 8198 16390 32774 65542 131078 262150 524294 1048582 2097158 4194310 8388614 16777222 33554438 67108870 134217734 268435462 536870918 1073741830 -2147483642
}
printf("\n", b);
for (int i = 0; i < 32; i++)
{
b = a ^ (1 >> i);//1>>i==0
printf("%d ", b);//7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
}
return 0;
}