位运算
常见的运算包括:与(&),或(|),异或(^)、非(~)操作。
其中:
- 与(&),或(|),异或(^)是二元运算,需要两个操作数参与运算。
- 非(~)是一元运算,只需要一个操作数参与运算。
常用场景,设置某些位的值为指定的值。
对于给定的x,如果需要对x某些位设置:
- 置位0,则采用 & 操作,y对应的位设置为0。
- 置位1,则采用 | 操作,y对应的位设置为1。
- 取反。则采用 ^ 操作,y对应的位设置为1。
- 保留x,&、|、^ 三个操作都可以,需要分别设置。其中,
- &,y对应的位设置为1。
- |,y对应的位设置为0。
- ^,y对应的位设置为0。
设置如下:
| x | ||||||
置位0 | 置位1 | 取反x | 保留x | ||||
y | 位操作 | & | | | ^ | & | | | ^ |
值 | 0 | 1 | 1 | 1 | 0 | 0 |
真值表如下:
&(与) | x | |||
0 | 1 | |||
y | 0 | 0 | 0 | 置位0 |
1 | 0 | 1 | 保留x |
|(或) | x | |||
0 | 1 | |||
y | 0 | 0 | 1 | 保留x |
1 | 1 | 1 | 置位1 |
^(异或) | x | |||
0 | 1 | |||
y | 0 | 0 | 1 | 保留x |
1 | 1 | 0 | 取反x |