補数を利用した減算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/17 15:19 UTC 版)
補数を利用すると、正整数の減算を加算処理で行うことができる。 以下に、10 進 5 桁の減算 52934 − 38917 = 14017 {\displaystyle 52934-38917=14017} を、補数を用いて加算処理に置き換えた例を説明する。被減数を x、減数を y とし、減算結果を x − y ≡ z {\displaystyle x-y\equiv z} とする。 減数 y の減基数の補数を求める。この計算は、各桁について補数を求めればよいので桁借りが発生せず、簡単に行うことができる。 y ′ ≡ ( 10 5 − 1 ) − y {\displaystyle {\begin{aligned}y'&\equiv (10^{5}-1)-y\end{aligned}}} ⟹ [ 9 9 9 9 9 − 3 8 9 1 7 6 1 0 8 2 ] {\displaystyle \Longrightarrow \left[\quad {\begin{matrix}&9&9&9&9&9\\-&3&8&9&1&7\\\hline &6&1&0&8&2\\\end{matrix}}\quad \right]} 減数 y の基数の補数を求める。これは減基数の補数 y ′ {\displaystyle y'} に 1 を加えるだけである。 y ″ ≡ 10 5 − y = y ′ + 1 {\displaystyle {\begin{aligned}y''&\equiv 10^{5}-y\\&=y'+1\\\end{aligned}}} ⟹ [ 6 1 0 8 2 + 1 6 1 0 8 3 ] {\displaystyle \Longrightarrow \left[\quad {\begin{matrix}&6&1&0&8&2\\+&&&&&1\\\hline &6&1&0&8&3\\\end{matrix}}\quad \right]} 被減数 x と 減数 y の基数の補数とを足し合わせる。このとき、最上桁の桁上がりは無視する(つまり結果から 10 5 {\displaystyle 10^{5}} を減ずる)。 z ≡ x − y = x + y ″ − 10 5 {\displaystyle {\begin{aligned}z&\equiv x-y\\&=x+y''-10^{5}\\\end{aligned}}} ⟹ [ 5 2 9 3 4 + 6 1 0 8 3 ( 1 ) 1 4 0 1 7 ] {\displaystyle \Longrightarrow \left[\quad {\begin{matrix}&5&2&9&3&4\\+&6&1&0&8&3\\\hline (1)&1&4&0&1&7\\\end{matrix}}\quad \right]} このように、本来桁借りを考慮しなければならないような減算であっても、補数の概念を利用すれば加算処理に置き換えて計算することができる。 上に挙げたのは10進法の例であるが、これは任意の基数において成り立つ。 この性質により、負整数の表記法として基数の補数を採用すると、最上位桁からの桁上がり(桁あふれ・算術オーバーフロー)を無視すれば、通常の加算処理で負整数の加算(つまり正整数の減算)が行えることになる。この利点のため、2の補数は多くのコンピュータで負整数の内部表現に採用されている。
※この「補数を利用した減算」の解説は、「補数」の解説の一部です。
「補数を利用した減算」を含む「補数」の記事については、「補数」の概要を参照ください。
- 補数を利用した減算のページへのリンク