目录
?学习使用按位与& ,按位或 |,按位异或 ^和按位取反~
对两个二进制数的对应位进行与操作。如果两个位置上的位都是1,则结果为1,否则为0。
0 & 0 = 0;
0 & 1 = 0;
1 & 0 = 0;
1 & 1 = 1
有0则0,同1则1
例如:给定两个二进制数1010和1100,进行按位与操作:
1010 & 1100 ------- ? 1000
对两个二进制数的对应位进行或操作。如果两个位置上的位中至少有一个为1,则结果为1,否则为0。
0 | 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 1
有1则1,同0则0
例如:给定两个二进制数1010和1100,进行按位或操作:
??1010 | 1100 ------- ? 1110
对两个二进制数的对应位进行异或操作。如果两个位置上的位不同,则结果为1,否则为0。
0 ^ 0 = 0;
0 ^ 1 = 1;
1 ^ 0 = 1;
1 ^ 1 = 0
相同则0,不同则1
例如:给定两个二进制数1010和1100,进行按位异或操作:
1010 ^ 1100 ------- ? 0110
将一个二进制数的每个位取反,即将所有的1变为0,将所有的0变为1。
~0 = 1;
~1 = 0
例如:给定一个二进制数1010,进行按位取反操作:
~ 1010 ------- ? 0101
//按位与&
//0 & 0 = 0; 0 & 1 = 0; 1 & 0 = 0; 1 & 1 = 1
#include "stdio.h"
main()
{
int a, b;
a = 077; // 1110111
b = a & 3; // 0000011
printf("\40: The a & b(decimal) is %d \n", b);//decimal--十进制
b &= 7; // 0000111
printf("\40: The a & b(decimal) is %d \n", b);
}
?
//按位或 | 。
//0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1
#include "stdio.h"
main()
{
int a, b;
a = 077;
b = a | 3;
printf("\40: The a & b(decimal) is %d \n", b);
b |= 7;
printf("\40: The a & b(decimal) is %d \n", b);
}
?
//按位异或 ^ 。
//0 ^ 0 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0
#include "stdio.h"
main()
{
int a, b;
a = 077;
b = a ^ 3;
printf("\40: The a & b(decimal) is %d \n", b);
b ^= 7;
printf("\40: The a & b(decimal) is %d \n", b);
}
?
//按位取反~。
//~0 = 1; ~1 = 0;
#include "stdio.h"
main()
{
int a, b;
a = 234;
b = ~a;
printf("\40: The a's 1 complement(decimal) is %d \n", b);
a = ~a;
printf("\40: The a's 1 complement(hexidecimal) is %x \n", a);
}
?