Java | ビット演算子とシフト演算子

Java Java
スポンサーリンク

「サンプルコードを実際に動かして、1行ずつどういう意味か」を追っていくと理解が深まります。ここでは ビット演算子とシフト演算子 を使ったシンプルなコードを例に、段階的に解説します。


サンプルコード

public class BitSample {
    public static void main(String[] args) {
        int a = 13;   // 1101 (2進数)
        int b = 6;    // 0110 (2進数)

        int andResult = a & b;
        int orResult  = a | b;
        int xorResult = a ^ b;
        int notResult = ~a;

        int leftShift  = a << 1;
        int rightShift = a >> 1;

        System.out.println("a & b = " + andResult);
        System.out.println("a | b = " + orResult);
        System.out.println("a ^ b = " + xorResult);
        System.out.println("~a    = " + notResult);
        System.out.println("a << 1 = " + leftShift);
        System.out.println("a >> 1 = " + rightShift);
    }
}
Java

実行の流れを追う

1. 変数の準備

  • a = 13 → 2進数で 1101
  • b = 6 → 2進数で 0110

ここから「ビットごとの計算」をしていきます。


2. AND(&)

  1101 (13)
& 0110 (6)
= 0100 (4)

→ 共通して1の部分だけ残る。結果は 4


3. OR(|)

  1101 (13)
| 0110 (6)
= 1111 (15)

→ どちらかが1なら1。結果は 15


4. XOR(^)

  1101 (13)
^ 0110 (6)
= 1011 (11)

→ 違うところだけ1。結果は 11


5. NOT(~)

a = 00000000 00000000 00000000 00001101 (13)
~a= 11111111 11111111 11111111 11110010 (-14)

→ 全部反転するので、結果は -14


6. 左シフト(<< 1)

  1101 (13)
<< 1
=11010 (26)

→ 1ビット左にずらす。結果は 26


7. 右シフト(>> 1)

  1101 (13)
>> 1
= 0110 (6)

→ 1ビット右にずらす。結果は 6


実行結果まとめ

a & b = 4
a | b = 15
a ^ b = 11
~a    = -14
a << 1 = 26
a >> 1 = 6

ポイント

  • ビット演算子は「0と1の重なり方」を見る
  • シフト演算子は「ビットをスライドさせる」
  • 実際に System.out.println() で出力して確認すると、頭の中でイメージしやすくなる

👉 ここまでで「1行ずつの動き」を追いました。

タイトルとURLをコピーしました