a & b a | b a ^ b ~a a << n a >> nのような演算子がある。上から、論理積、論理和、排他的論理和、否定、 左シフト、右シフトである。あまり使うことは無い。次の実行例で 理解して欲しい。
#include <stdio.h> void bitprint(unsigned int a) { int i; char buf[sizeof(int)*8]; for (i=0; i<sizeof(int)*8; i++) { if ((a & 1) == 0) buf[i] = '0'; else buf[i] = '1'; a >>= 1; } for (i=sizeof(int)*8-1; i>=0; i--) { printf("%c", buf[i]); } printf("\n"); } main() { bitprint(5); bitprint(6); bitprint(6 & 5); bitprint(6 | 5); bitprint(6 ^ 5); bitprint(~5); bitprint(5 >> 1); bitprint(5 >> 2); bitprint(5 << 1); bitprint(5 << 2); return 0; } |
00000000000000000000000000000101 00000000000000000000000000000110 00000000000000000000000000000100 00000000000000000000000000000111 00000000000000000000000000000011 11111111111111111111111111111010 00000000000000000000000000000010 00000000000000000000000000000001 00000000000000000000000000001010 00000000000000000000000000010100
a | b | a & b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
a | b | a | b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
a | b | a ^ b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
a | ~ a |
---|---|
0 | 1 |
1 | 0 |