C语言的位操作只适用于整形
顾名思义,是以数值的二进制位为单位进行操作的,包含&(按位与)、|(按位或)、^(按位异或) 、~(按位取反)、<<(左移)、>>(右移)共六种运算符。
&(按位与)
A | B | A&B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
与逻辑与不同的是,我们需要将数据转为二进制计算
#include<stdio.h>
int main()
{
char a = 100; //0110 0100
char b = 44; //0010 1100
char c = a & b; //0010 0100按位与即36
char d = a && b; //非零为真,即1&&1,为1
return 0;
}
|(按位或)
A | B | A|B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
同理,与逻辑或不同的是,我们需要将数据转为二进制计算
#include<stdio.h>
int main()
{
char a = 100; //0110 0100
char b = 44; //0010 1100
char c = a | b; //0110 1100按位或即108
char d = a || b; //非零为真,即1||1,为1
return 0;
}
^(按位异或)
A | B | A^B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
#include<stdio.h>
int main()
{
char a = 100; //0110 0100
char b = 44