論理和・論理積・排他的論理和

明解C言語 入門編 > 7. 基本型 >

論理和論理積排他的論理和

C


#include <stdio.h>

int count_bits(unsigned x)
{
int count = 0;
while (x)
{
if (x & 1u) count++;
x >>= 1;
}
return count;
}

int int_bits(void)
{
return count_bits(~0u);
}

void print_bits(unsigned x)
{
int i;
for (i = int_bits() - 1; i >= 0; i--)
putchar(((x >> i) & 1u) ? '1' : '0');

putchar('\n');
}

int main(int argc, char* argv[])
{
unsigned na = 12345;
unsigned nb = 54321;

printf("A = "); print_bits(na);
printf("NOT A = "); print_bits(~na);
putchar('\n');

printf("A = "); print_bits(na);
printf("B = "); print_bits(nb);
printf("A AND B = "); print_bits(na & nb);
putchar('\n');

printf("A = "); print_bits(na);
printf("B = "); print_bits(nb);
printf("A OR B = "); print_bits(na | nb);
putchar('\n');

printf("A = "); print_bits(na);
printf("B = "); print_bits(nb);
printf("A XOR B = "); print_bits(na ^ nb);

return 0;
}

実行結果

T:\>lesson056\project1.exe
A = 00000000000000000011000000111001
NOT A = 11111111111111111100111111000110

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A AND B = 00000000000000000001000000110001

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A OR B = 00000000000000001111010000111001

A = 00000000000000000011000000111001
B = 00000000000000001101010000110001
A XOR B = 00000000000000001110010000001000