二の補数を用いた二進法減算
二進法減算は古典的なビット単位の借り算で実行できますが、二の補数算術を使うとさらにシンプルです。被減数を負の二進形式に変換してから加算することで、演算を単一の二進法加算に帰着させます。
二の補数では、正の数と同じビット幅で負の数をエンコードでき、先頭の「負の重み」ビットを使用します。正の数と負の数を加算すると、負のオペランドの最上位ビットが負の重みとして振る舞い、実質的に減算を実行します。
例1:7₁₀ − 5₁₀
各値を、3つのデータビットと1つの負の重みビットを用いた二の補数で表現:
正の7 = 0111₂
負の5 = 1011₂
これらを加算:
. 1111 ← 繰り上げビット . 0111 . + 1011 . ------ . 10010 . | . オーバーフロービットを破棄 . 結果 = 0010₂
オーバーフロービットは、最左位置が負の重み(−8)を表すため破棄されます。最終的な4ビットパターン 0010₂ は十進法の2に等しく、7 − 5 = 2 を確認します。
例2:18₁₀ + (−25)₁₀
必要なビット幅を決定。演算中の最大絶対値は25で、5ビット必要;負の重みビットを加えて計6ビット。
+25とその二の補数を表現:
+25₁₀ = 011001₂(6ビット) 11001₂ の一の補数 = 100110₂ 1を加える → 二の補数 = 100111₂ −25₁₀ = 100111₂
正の18は:
18₁₀ = 010010₂
2つの数を加算:
. 11 ← 繰り上げビット . 100111 . + 010010 . ------ . 111001
オーバーフローは発生しないため、結果 111001₂ のまま。最上位ビットが1なので二の補数では負の値を示します。十進法に戻すと:
(1 × −32) + (1 × 16) + (1 × 8) + (1 × 1) = −7
したがって 18 + (−25) = −7、期待通りです。
関連ワークシート:
- 二進法数学ワークシート
産業技術