戻る 2進数の減算  (binary subtraction)


2 進数の減算も、 加算 と同じで、 組合せは次の 4 種類です。

A   B   D
000
011 (borrow)
101
110

2 行目の 0 − 1 = 1 が異様に見えるかもしれませんが、 これは桁借り (borrow) を前提にしています。


10進数でも同じことで、 1000円札で 55円 の買い物をしたとき、 お釣りは



と計算します。 はじめに 0 − 5 を計算しなくてはなりませんが、 桁借りをした結果、 5 になっています。

2 進数でも同じことで、 (2 進数の) 「 1 0 0 0 円 」 で 「 1 1 円 」 の買い物をしたときのお釣りは



です。

10進数なら何でもないことも、 2 進数ではやはり腑に落ちないかも知れません。
多分、 誰も、 2 進数の 「 1 0 0 0 円 」 で 「 1 1 円 」 の買い物を したことがないからでしょう





下図には 8 桁の 2 進数、 A, B が表示されています。 最下位の桁が赤く表示されていますが、 いまこの減算を実行すると、 結果は右の 2 進数の減算規則の、赤く表示されている行の通りになります。

右下の ボタンをクリックして下さい。
一桁分の計算が実行されて、 差が D の行に表示されます。
桁借り (Borrow) が発生すると 見かけ上 被減数 A が変わって分かりにくくなるので、 いちばん上の A の行には 被減数の初期値が表示されています。




ボタンで、一桁ずつ戻ることができます。
ボタンで最初の状態に戻ります。
テキストフィールド A、 B に数値を入力すると、任意の値 (1 〜 255) の減算ができます。
(差が負になる減算はできません)
2進数でも 10進数でも入力できます。 チェックボックス BIN、 DEC で選択して下さい。





減算は桁借りが出ると少しややこしい場合がありますが、 補数を加える ことによって減算をすることもできます。
上図の ボタンをクリックして "加算" のモードにし、 ボタンをクリックすると、 被減数が 2 の補数に変わります。
この状態で ボタンをクリックしていくと、 2 の補数になった被減数が加算されていきますが、 全桁を加算して、 和の最上位桁を無視すると、 減算と全く同じ結果を得ることができます。




情報処理概論 に戻る   講義資料 に戻る   戻る

*1 10進数の場合は、 1000円札をくずして 990円 と 10円 に分けて、 その 10円 から 5円 を引く、 と考えればいいでしょう。  2進数の場合は 「1 0 0 0 円」 (10進数では 8円) をくずして 「1 1 0 円」 (10進数では 6円) と 「1 0 円」 (10進数では 2円) に分けて、 その 「1 0 円」 (10進数では 2円) から 「1 円」 を引くことになるのですが…。

Java applet 圧縮アーカイブファイル    自由利用マーク
2007.07.15  address