ビット操作の可視化

ビット演算は整列した列へブール規則を適用し、一度に八、三十二、六十四ビットなどを扱います。短い表記でも、位置と語幅の管理が必要です。図では列をそろえ、語の境界と捨てるビットを示します。

ビット演算の基礎は AND、OR、XOR、NOT、シフトを学び、ビット技巧はそれらでマスク、置かれた 1 の計数、2 の累乗判定を作ります。

マスクは他の位を変えず、権限や機能フラグを読みます。最下位の 1 を消せば疎なフラグ集合を全位置の走査なしに訪れられ、popcount(a ^ b) は相違するビット数を測れます。正数の確認を伴う 2 の累乗判定は、容量やアラインメント値の 1 が一つだけかを検証できます。

レッスンの比較

レッスン中心の問い操作観察する結果
ビット演算の基礎各演算子は何をするかAND、OR、XOR、NOT、<<、>>一列の出力と移動したビット
ビット技巧演算子でどの規則を保てるかマスク、x & (x - 1)指定した位や最下位の 1 が消える

基礎は列ごとの真理値表を読み、技巧は構造を読みます。同じ AND がテスト、消去、反復回数で 1 を数えるループの道具になります。

推奨する学習順序

ビット演算の基礎では、十進値よりビットのラベルを見ます。AND は共通の 1、OR はどちらかの 1、XOR は不一致を残し、シフトは位置を動かします。固定 8 ビットの境界は、NOT の結果をマスクで制限する理由も示します。

次はビット技巧です。一つだけ 1 のマスクを作り、テスト、設定、消去へ通します。x - 1 の借りでは最下位の 1 が 0 になり、その下が 1 になります。AND を取ると置かれた 1 がちょうど一つ消えます。最後に 40、32、0 を比較し、通常の偽、2 の累乗、ゼロの落とし穴を確認します。

注目する点

  • 位の番号とマスク値を分けます。ビット 2 は位置、00000100 はそこを選ぶマスクです。
  • 冪等性と可逆性を分けます。OR の二回設定は一回と同じで、XOR の二回反転は元へ戻り、消去は情報を失います。
  • Kernighan のループ回数は語幅ではなく、1 の数です。
  • 前提を確認します。2 の累乗は正で、1 が一つです。ゼロも x & (x - 1) がゼロになるため、その式だけでは足りません。

ビット操作の可視化一覧

値や対象ビットを変え、Python または JavaScript のハイライトとトレースを照合してください。