0Pricing
C# Academy · レッスン

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

&、|、^、~とシフトを使ってビットを操作します。

「ビット演算子とシフト演算子」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。

ビットと2進数

整数はビットとして格納されます。ビット演算子は、それらの個々のビットに対して作用します。C#では&、|、^、~、<<、>>を使用できます。

using System;

class Program {
    static void Main() {
        int x = 5;
        Console.WriteLine(Convert.ToString(x, 2));
    }
}

ビットAND: &

&は、両方のビットが1の場合にのみビットを1にします。5 & 3では101と011を比較し、001 = 1になります。

using System;

class Program {
    static void Main() {
        Console.WriteLine(5 & 3);
        Console.WriteLine(12 & 10);
    }
}

ビットOR: |

|は、いずれかのビットが1の場合にビットを1にします。5 | 3は111 = 7になります。

using System;

class Program {
    static void Main() {
        Console.WriteLine(5 | 3);
        Console.WriteLine(8 | 1);
    }
}

ビットXOR: ^

^は、ビットが異なる場合にビットを1にします。5 ^ 3は110 = 6になります。

using System;

class Program {
    static void Main() {
        Console.WriteLine(5 ^ 3);
        Console.WriteLine(7 ^ 7);
    }
}

ビットNOT: ~

~はすべてのビットを反転します。2の補数表現のため、~nは-(n + 1)と等しくなります。

using System;

class Program {
    static void Main() {
        Console.WriteLine(~5);
        Console.WriteLine(~0);
    }
}

左シフト: &lt;&lt;

<<はビットを左に移動し、右側を0で埋めます。1ビットシフトするたびに値は2倍になります。1 << 3は8です。

using System;

class Program {
    static void Main() {
        Console.WriteLine(1 << 3);
        Console.WriteLine(5 << 1);
    }
}

右シフト: &gt;&gt;

>>はビットを右に移動します。正の数では、1ビットシフトするたびに値が半分になります。20 >> 2は5です。

using System;

class Program {
    static void Main() {
        Console.WriteLine(20 >> 2);
        Console.WriteLine(8 >> 1);
    }
}

ビットマスク

マスクを使うと、特定のビットだけを取り出せます。値とマスクのANDを取り、対象のビットだけを残します。

using System;

class Program {
    static void Main() {
        int value = 0b1011;
        int mask = 0b0110;
        Console.WriteLine(value & mask);
    }
}

ビットの設定とクリア

単一ビットのマスクと|を使うとビットを設定でき、反転したマスクと&を使うとビットをクリアできます。

using System;

class Program {
    static void Main() {
        int flags = 0;
        flags |= (1 << 2);
        Console.WriteLine(flags);
        flags &= ~(1 << 2);
        Console.WriteLine(flags);
    }
}

ビットの確認

ビットが設定されているか確認するには、そのビットのマスクとANDを取り、0以外と比較します。

using System;

class Program {
    static void Main() {
        int flags = 0b0100;
        bool isSet = (flags & (1 << 2)) != 0;
        Console.WriteLine(isSet);
    }
}

高速な乗算としてのシフト

シフトは2の累乗による乗算や除算を高速に行う方法であり、パフォーマンスが重要なコードでよく使われます。

using System;

class Program {
    static void Main() {
        int n = 7;
        Console.WriteLine(n << 2);
        Console.WriteLine(n >> 1);
    }
}

理解度チェック

ビット演算についての理解度を確認します。

まとめ

ビット演算子はビット単位で作用します。&はAND、|はOR、^はXOR、~はNOTです。<<と>>のシフトはビットを左右に移動し、2の累乗による乗算や除算を行います。

マスクを使うと個々のビットを設定、クリア、確認できます。これはフラグや低レベルのデータ処理の基礎となります。

よくある質問

「ビット演算子とシフト演算子」レッスンは無料ですか?

はい。「ビット演算子とシフト演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。

「ビット演算子とシフト演算子」で何を学びますか?

&、|、^、~とシフトを使ってビットを操作します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「ビット演算子とシフト演算子」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 算術演算子と代入演算子
  2. 比較演算子と論理演算子
  3. ビット演算子とシフト演算子
  4. 演算子の優先順位と結合規則
← C# Academyに戻る