ビットごとの演算子

ビット単位で演算を行う演算子として次の4つがある。

&ビットごとの AND
|ビットごとの OR
^ビットごとの XOR(排他的論理和)
~1 の補数

1 の補数というのは、ビットの 0 と 1 を反転させる単項演算子だ。次のプログラムで、その動作を確認することができる。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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");
}
#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"); }
#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

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