C语言提供了6个位操作运算符。这些运算符只能作用于整型操作数
& 按位与(AND)
| 按位或(OR)
^ 按位异或(XOR)
<< 左移
>> 右移
~ 按位求反
1&0为0,1&1为1,0&0为0
1|0为1,1|1为1,0|0为0
11为0,00为0,1^0为1
x<<2表示将x的值左移2位,右边空出的2位用0补齐,该表达式等价于对左操作数乘以4(类比10进制)
在对无符号值进行右移时,左边空出的部分用0补齐,当对有符号数进行右移时,某些机器将对左边空出的部分用符号位填补(即"算术移位"),而另一些机器则对左边空出的部分用0填补(即"逻辑移位")。
一元运算符~
用于求整数的二级制反码,即将操作数各二进制位上的1变为0,0变为1.