削除された内容 追加された内容
Dosei (会話 | 投稿記録)
m 負号など
→‎利点: 計算例を書き直し
30行目:
 
==利点==
基数の補数を負の数の表記法として採用すると、最上位桁からの桁上がり(桁あふれ・[[オーバーフロー]])を無視すれば、通常の加算処理で負の数の加算(つまり正の数の減算)が行えることになる。この利点のため、2の補数は多くのコンピュータで負の数の内部表現に採用されている。
 
補数を用いて10進数の減算を加算処理に置き換えて計算する例を次に示す。
この利点のため、[[2 の補数]]は多くのコンピュータで負の数の内部表現に採用されている。
当然、この利点は10進数でも利用できる。以下に例を示す。
 
52934 − -38917
= 52934+100000-38917-100000 … (1) 式をこのように変形してみる
=52934 − (99999 − 61082) … (1) 61082 は 38917 の 9 の補数(簡単な数字の置き換えで求まる)
= 52934+1+(99999-38917)-100000
=52934 − (100000 − 61083) … (2) 61083 は 38917 の 10 の補数(1 を加える)
= 52934+(1+61082)-100000 − (99999 − 61082) … (12) 61082 は 38917 の 9 の補数(簡単な数字の置き換えで求まる)
=(52934 + 61083) − 100000 … (3) 5 桁の減算が、5 桁の加算に変形された。
=114017 − 52934+61083-100000 … (43) 最後に、ごく単純な減算をすればよい。61083 は 38917 の 10の補数(9の補数+1)
= 114017-100000 … (4) この減算は、最上位桁を無視するだけで良い
= 14017
 
実際の計算機では、2 進数での同等な処理を行う際、(2) の 1 の加算を、通常の加算では使用しない最下位桁の桁上がり信号を利用し (3) の加算と同時に計算できるため、1 回の減算は、1 回の加算と同コストとなる。
 
==計算法==