ビット単位で演算を行う演算子として次の4つがある。
& | ビットごとの AND |
| | ビットごとの OR |
^ | ビットごとの XOR(排他的論理和) |
~ | 1 の補数 |
1 の補数というのは、ビットの 0 と 1 を反転させる単項演算子だ。次のプログラムで、その動作を確認することができる。
#include void print_binary(char ch); int main(void) { char ch; ch = 'a'; print_binary(ch); ch = ~ch; print_binary(ch); return 0; } void print_binary(char ch) { int i; for (i = 128; i > 0; i = i / 2) { if (i & ch) { printf("1"); } else { printf("0"); } } printf("\n"); }
takatoh@nightschool $ ./sample_11_5 01100001 10011110
ちゃんと各ビットが反転してるね。