ビットごとの演算子

ビット単位で演算を行う演算子として次の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

ちゃんと各ビットが反転してるね。