ビット演算子とシフト演算子
&、|、^、~とシフトを使ってビットを操作します。
「ビット演算子とシフト演算子」は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);
}
}左シフト: <<
<<はビットを左に移動し、右側を0で埋めます。1ビットシフトするたびに値は2倍になります。1 << 3は8です。
using System;
class Program {
static void Main() {
Console.WriteLine(1 << 3);
Console.WriteLine(5 << 1);
}
}右シフト: >>
>>はビットを右に移動します。正の数では、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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 算術演算子と代入演算子
- 比較演算子と論理演算子
- ビット演算子とシフト演算子
- 演算子の優先順位と結合規則