目录
一、什么是位运算
C语言中支持按位布尔运算。在布尔运算中只有0和1,0即为False,1即为True。我们在布尔运算中使用的那些按位运算符号正是C语言中使用的,分别是——
按位与——&
按位或——|
按位取反——~
按位异或——^
1.1按位与,即&
只有A与B都为1时,A&B才为1,否则为0。
A | B | A&B |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
1.2按位或,即|
只要A或B其中之一为1,A|B即为1。
A | B | A|B |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
1.3按位取反,即~
按位取反是单目运算符,只需要一个操作数,在位运算符中优先级最高。
A | ~A |
---|---|
1 | 0 |
0 | 1 |
1.4按位异或,即^
当A与B相异(不同)时,A^B为1;否则为0。
A | B | A^B |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
二、什么是逻辑运算
C语言中提供了逻辑运算符“&&”,“||”,“!”,分别对应命题逻辑中的AND,OR,NOT。
2.1逻辑与,即&&
只要操作数中有0,结果即为0
A | B | A&&B |
---|---|---|
非0 | 非0 | 1 |
非0 | 0 | 0 |
0 | 非0 | 0 |
0 | 0 | 0 |
2.2逻辑或,即||
只要操作数中有非0的数,结果即为1
A | B | A||B |
---|---|---|
非0 | 非0 | 1 |
非0 | 0 | 1 |
0 | 非0 | 1 |
0 | 0 | 0 |