C語言提供了6個位操作運(yùn)算符。這些運(yùn)算符只能作用于整型操作數(shù)
& 按位與(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補(bǔ)齊,該表達(dá)式等價(jià)于對左操作數(shù)乘以4(類比10進(jìn)制)
在對無符號值進(jìn)行右移時(shí)裆赵,左邊空出的部分用0補(bǔ)齊东囚,當(dāng)對有符號數(shù)進(jìn)行右移時(shí),某些機(jī)器將對左邊空出的部分用符號位填補(bǔ)(即"算術(shù)移位")战授,而另一些機(jī)器則對左邊空出的部分用0填補(bǔ)(即"邏輯移位")页藻。
一元運(yùn)算符~
用于求整數(shù)的二級制反碼桨嫁,即將操作數(shù)各二進(jìn)制位上的1變?yōu)?,0變?yōu)?.