![]() |
2進数の加算と減算 |
2進数 は 0 と 1 だけで表される数字ですから、
2進数の加減算も、 0 と 1 だけで計算します。
10進数のようにいろんな数字がないので計算は簡単ですが、 1 + 1 = 2 という常識的な計算をするとき、
2 進数には 「 2 」 がないので、 慣れるまでは 戸惑うようです。
2 進数の加算は単純で、すべての加算のケースを列挙しても、 下表のように 4 種類しかありません。
A と B は加算する二つの 2進数、 S はその和で、
C は加算の結果生じた桁上げ (carry) です。
2進数に '2' はありませんから、 先の 1 + 1 = 2 は、 2進数の計算で桁上げも含めて書けば、 1 + 1 = 10 となります。
2進数の '10' は 10進数の '2' なので、 辻褄は合っているのです。
A | B | C | S | ||
---|---|---|---|---|---|
0 | + | 0 | = | 0 | 0 |
0 | + | 1 | = | 0 | 1 |
1 | + | 0 | = | 0 | 1 |
1 | + | 1 | = | 1 | 0 |
しかし、 本格的な加算をするには、 これではまだ、十分ではありません。
10進数の加算では、 例えば 7 + 3 = 10 ですが、 同じ計算でも 2 桁の加算では、
75 + 38 = 113 となることがあります。
いうまでもなく、下位の加算、5 + 8 = 13 で生じた桁上げ
(carry) の 1 を加えたためです。
2 進数の加算でもこれと同じことが起こり、
下位の桁の加算で桁上げ (carry) が生じると、これも加えなくてはなりません。
2 進数の加算は、桁上げがない場合とある場合を考慮すれば、下表のように、 8 つのケースがあります。
下表で、 Cn-1 は下位の桁の計算で生じた桁上げ、
Cn は現在の桁の計算によって生じる桁上げです。
Cn-1 | A | B | Cn | S | |||
---|---|---|---|---|---|---|---|
0 | + | 0 | + | 0 | = | 0 | 0 |
0 | + | 0 | + | 1 | = | 0 | 1 |
0 | + | 1 | + | 0 | = | 0 | 1 |
0 | + | 1 | + | 1 | = | 1 | 0 |
1 | + | 0 | + | 0 | = | 0 | 1 |
1 | + | 0 | + | 1 | = | 1 | 0 |
1 | + | 1 | + | 0 | = | 1 | 0 |
1 | + | 1 | + | 1 | = | 1 | 1 |
下図には 8 桁の 2 進数、 A, B が表示されています。
最下位の桁は赤く表示されていますが、 いまこの加算を実行すると、
右に表示されている 2 進数の加算規則の、赤で表示されている行の通りになります
(ここでは、キャリーは薄く表示されています)。
右下の ボタンをクリックして下さい。
赤で表示されている桁の計算が実行されて、
和が S の行に表示されます。
加算の結果桁上げ (Carry) が発生すると、
C の行にキャリー(1)が表示されます。
次の桁はキャリーも含めて加算されます。
DEC | A (augend) | ![]() | ADD/SUB | 1's COM. | 2's COM. |
---|---|---|---|---|---|
10進数で数値を入力します。 | 入力された加数(または減数)を読みとります。 | ここに加数(または減数)を入力します。 | 加算/減算を切り換えます。 | 加数を1の補数に変換します。 | 加数を2の補数に変換します。 |
BIN | B (addend) | ![]() | CLEAR | BACK | OPERATION |
2進数で数値を入力します。 | 入力された被加数(または被減数)を読みとります。 | ここに被加数(または被減数)を入力します。 | 演算ステップを0にします。 | 演算する桁を一桁もどします。 | 一桁づつ演算を実行します。 |
説 明