数値をビット単位で操作する!「ビット演算(&、|、^、~、<<、>>)」をやさしく解説
    
      C言語では、数値の中身(ビット単位)を直接操作するビット演算が可能です。
      &, |, ^, ~, <<, >> などの記号を使って、より細かい制御ができるようになります。
    
    ビット演算とは?
    
      ビット演算とは、整数値を2進数として見て、ビット単位で演算する方法です。
      フラグの管理、効率的な数値計算、ハードウェア制御などに活用されます。
    
    基本のビット演算子一覧
    
      
        | 演算子 | 意味 | 例(2進数) | 結果 | 
      
        | & | AND(両方1なら1) | 1100 & 1010 | 1000 | 
      
        | | | OR(どちらか1なら1) | 1100 | 1010 | 1110 | 
      
        | ^ | XOR(異なれば1) | 1100 ^ 1010 | 0110 | 
      
        | ~ | NOT(反転) | ~1100 | 0011(※符号に注意) | 
      
        | << | 左シフト(nビット左へ) | 0001 << 2 | 0100(4) | 
      
        | >> | 右シフト(nビット右へ) | 0100 >> 1 | 0010(2) | 
    
    例:AND演算(&)でビットを取り出す
    
int value = 0b1011;    // 2進数(11)
int mask  = 0b0010;    // 2番目のビットを確認
if (value & mask) {
    printf("ビット1が立っています\n");
}
    
    例:OR演算(|)でビットをセットする
    
int flags = 0b0001;
flags = flags | 0b0100;  // 3番目のビットをON
// flags == 0b0101
    
    例:XOR演算(^)でビットの反転
    
int val = 0b1100;
val = val ^ 0b0100;  // 2番目のビットを反転
// val == 0b1000
    
    例:左シフト・右シフト
    
int x = 1;
int y = x << 3;  // 1を左に3ビット → 8(1×2^3)
int z = y >> 2;  // 8を右に2ビット → 2(8÷2^2)
    
    ビット演算の用途
    
      - フラグ管理(ON/OFFの切り替え)
- 高速な掛け算・割り算(2のべき乗)
- ハードウェア制御やシリアル通信
- 整数の効率的な記憶・圧縮
注意点
    
      - 符号付き整数のビット反転は注意(マイナスになる)
- 桁あふれに気をつける(シフトしすぎ)
- 1 << nは「n番目のビットをON」にするテクニック
まとめ
    
      ビット演算は、数値の中身をビット単位で制御する強力なテクニックです。
      初心者の方はまず、&, |, ^ を使ったフラグ操作の練習から始めてみると、C言語の理解がグッと深まります!