計算機內(nèi)部,所有數(shù)據(jù)被表示為二進(jìn)制數(shù)的序列。位運算符通常用于處理整型操作數(shù)的各個數(shù)位,通常將數(shù)據(jù)當(dāng)做無符號整型來處理。 位運算符有:按位于(&),按位或(|),按位異或(^),左移(<<),右移(>>)和按位取反(~)。 按位與(&)僅當(dāng)兩個操作數(shù)相應(yīng)的二進(jìn)制數(shù)位均為1時,按位與運算結(jié)果相應(yīng)的二進(jìn)制數(shù)位才會被置成1。 按位或(|)如果兩個操作數(shù)相應(yīng)的二進(jìn)制數(shù)位至少一個是1,則按位或運算結(jié)果相應(yīng)的二進(jìn)制數(shù)位會被置成1。 按位異或(^)僅當(dāng)兩個操作數(shù)相應(yīng)的二進(jìn)制數(shù)位只有一個是1時,按位異或運算結(jié)果相應(yīng)的二進(jìn)制數(shù)位才被置成1。 按位取反(~)將操作數(shù)中所有0的數(shù)位置成1,1的數(shù)位置成0。 左移(<<)將第一個操作數(shù)按位向左移動,移動的位數(shù)由第二個操作數(shù)指定。右邊騰空的數(shù)位補0。 右移(>>)將第一個操作數(shù)按位向右移動,移動的位數(shù)由第二個操作數(shù)指定。左邊騰空的數(shù)位填補方式取決于所使用的計算機。 按位左移運算符的使用(按位顯示一個無符號整數(shù)):
void displayBits(unsigned);void displayBits(unsigned value) { unsigned mask = 1 << CHAR_BIT * sizeof(unsigned) - 1; int counter = 1; for (; counter <= CHAR_BIT * sizeof(unsigned); counter++) { putchar(mask & value ? '1' : '0'); value << 1; if (c % 8 == 0) { putchar(' '); } } putchar('/n');}符號常量CHAR_BIT在頭文件limits.h中定義,表示一個字節(jié)的二進(jìn)制數(shù)的位數(shù)。若左移右移位數(shù)多余可移動的位數(shù)或者為負(fù)數(shù)時,則無定義。 按位運算后賦值運算符:
&=|=^=<<=>>=新聞熱點
疑難解答