#include int main(void) { int p=0x55, q; printf("ビット演算子 &, |, ^, ~ を紹介します。\n"); printf("&はビットごとの論理積\n"); printf("|はビットごとの論理和\n"); printf("^はビットごとの排他的論理和\n"); printf("~はビットの反転、をそれぞれ行います。\n"); printf("p=%x, p & 0x0f=%x\n", p, p & 0x0f); printf("p=%x, p | 0x0f=%x\n", p, p | 0x0f); printf("p=%x, p ^ 0x0f=%x\n", p, p ^ 0x0f); printf("p=%x, ~p=%x\n", p, ~p); printf("例えば 0x78 と 0x53 とのビットごとの排他的論理和は以下のとおり\n"); p = 0x78; q = 0x53; printf("p=%x, q=%x, p ^ q = %x\n", p, q, p ^ q ); printf("0x78 に 2 回 0x53 の排他的論理和を作用させると元の数 0x78 に戻ります。\n"); printf("p = p ^=q =%x\n", p ^= q); printf("p = p ^=q =%x\n", p ^= q); printf("このように排他的論理和は、情報の暗号化と復号化に使われたりします。\n"); return 0; }