計算機內部,所有數據被表示為二進制數的序列。位運算符通常用于處理整型操作數的各個數位,通常將數據當做無符號整型來處理。 位運算符有:按位于(&),按位或(|),按位異或(^),左移(<<),右移(>>)和按位取反(~)。 按位與(&)僅當兩個操作數相應的二進制數位均為1時,按位與運算結果相應的二進制數位才會被置成1。 按位或(|)如果兩個操作數相應的二進制數位至少一個是1,則按位或運算結果相應的二進制數位會被置成1。 按位異或(^)僅當兩個操作數相應的二進制數位只有一個是1時,按位異或運算結果相應的二進制數位才被置成1。 按位取反(~)將操作數中所有0的數位置成1,1的數位置成0。 左移(<<)將第一個操作數按位向左移動,移動的位數由第二個操作數指定。右邊騰空的數位補0。 右移(>>)將第一個操作數按位向右移動,移動的位數由第二個操作數指定。左邊騰空的數位填補方式取決于所使用的計算機。 按位左移運算符的使用(按位顯示一個無符號整數):
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é)的二進制數的位數。若左移右移位數多余可移動的位數或者為負數時,則無定義。 按位運算后賦值運算符:
&=|=^=<<=>>=新聞熱點
疑難解答