C語言提供了6個(gè)位操作運(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à)于對(duì)左操作數(shù)乘以4(類比10進(jìn)制)
在對(duì)無符號(hào)值進(jìn)行右移時(shí),左邊空出的部分用0補(bǔ)齊,當(dāng)對(duì)有符號(hào)數(shù)進(jìn)行右移時(shí),某些機(jī)器將對(duì)左邊空出的部分用符號(hào)位填補(bǔ)(即"算術(shù)移位"),而另一些機(jī)器則對(duì)左邊空出的部分用0填補(bǔ)(即"邏輯移位")。
一元運(yùn)算符~用于求整數(shù)的二級(jí)制反碼,即將操作數(shù)各二進(jìn)制位上的1變?yōu)?,0變?yōu)?.