ビット演算子
AND、OR、XOR、NOT、シフトを扱います。
「ビット演算子」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
ビットまで掘り下げる
すべての整数は、実際にはビットが並んだものです。ビット演算子を使えば、丸めや途中の算術処理なしに、個々の0と1を直接操作できます。
ビット単位のAND
&演算子は、両方の入力が1になっている位置のビットだけを残します。不要なビットをマスクして取り除く、古典的な方法です。
const masked = value & 0x0F;ビット単位のOR
|演算子は、どちらか一方の入力が1になっている位置のビットを1にします。ほかの部分に影響を与えず、特定のフラグだけをオンにするために使います。
const withFlag = value | 0b0010;ビット単位のXOR
^演算子は、入力が異なる位置のビットだけを1にします。フラグの切り替えや、2つのパターンの比較に便利です。
const toggled = value ^ 0b0001;ビット単位のNOT
単項~演算子は、すべてのビットを一度に反転します。1は0に、0は1になります。これにより、値の補数が作られます。
const inverted = ~flags;左シフト
<<演算子は、ビットを上位側へ移動し、空いた部分を0で埋めます。符号なしの値を1ビット左にシフトするたびに、値は2倍になります。
const doubled = x << 1;右シフト
>>演算子は、ビットを下位側へ移動します。符号なし整数では、1ビット右にシフトするたびに値が半分になります。
const halved = x >> 1;マスクによるビットの読み取り
ANDとマスクを組み合わせると、ビットがセットされているかをテストできます。value & maskが0以外なら、そのフラグはオンです。0ならオフです。
const isSet = (value & mask) != 0;セットとクリア
マスクをORしてビットをセットし、反転したマスクをANDしてビットをクリアします。これらを組み合わせることで、各フラグを正確に制御できます。
const cleared = value & ~mask;シフト量はチェックされます
Zigでは、型が保持できる範囲を超えてシフトすることはできません。範囲外のシフト量は、黙って不正な値になるのではなく、定義されたエラーになります。
ビットが重要な理由
ビット演算は、フラグ、権限、ハードウェアレジスタ、コンパクトなデータを支えています。1つの数値に複数のtrueまたはfalseの答えを保存できます。
クイックチェック
2つの入力が異なる場合にだけビットをセットしたいとします。どの演算子を使いますか?
まとめ:ビットを自在に扱う
これで&, |, ^, ~と、シフト演算子の<<および>>を使って、ビットの読み取り、セット、クリア、移動を完全な精度で行えるようになりました。⚙️
よくある質問
「ビット演算子」レッスンは無料ですか?
はい。「ビット演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「ビット演算子」で何を学びますか?
AND、OR、XOR、NOT、シフトを扱います。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ビット演算子」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。