9の補数と10の補数とは?求め方とC++での実装例をわかりやすく解説
デジタルシステムにおいて、9の補数と10の補数は、算術演算を簡単に実行するために使われる重要な概念です。補数を利用することで計算処理が効率化され、通常はハードウェアの負担をプログラム側で補う形として活用されます。
任意の数の9の補数を求めるには、その数を (10n − 1) から引きます。ここで n はその数の桁数です。より簡単な方法としては、与えられた10進数の各桁の数字をそれぞれ9から引くことでも求められます。
10の補数については、まず9の補数さえ求めてしまえば、比較的簡単に導き出すことができます。具体的には、任意の数の9の補数に1を加えるだけで、目的の10の補数が得られます。また、直接10の補数を計算したい場合は、次の式を使います。
10の補数 = 10n − 数(n は桁数)
具体例:10進数 456 の場合
10進数「456」を例にとります。まず、この数の9の補数は以下のように計算できます。
999 −456 _____ 543
続いて、この数の10の補数は、9の補数に1を加えて求めます。
543 (+)1 ______ 544
したがって、結果は以下の通りです。
入力:456 出力:544
数学的な解説
これらの関係は数学的に次のように表現できます。
10の補数 = 9の補数 + 1 10の補数 = 10i − num
ここで、i は num の総桁数を表します。
C++による実装例
以下は、C++を使って10の補数を実際に計算するプログラムの例です。入力された数の桁数を求めた後、公式に基づいて補数を算出しています。
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int i = 0, temp, comp, n;
n = 456;
temp = n;
while (temp != 0) {
i++;
temp = temp / 10;
}
comp = pow(10, i) - n;
cout << comp;
return 0;
}
このプログラムでは、while文で数値の桁数をカウントし、pow(10, i) によって10のi乗を計算しています。最後に元の数を引くことで、10の補数が求まります。補数の仕組みを理解しておくと、減算回路の設計や符号付き数値の表現など、デジタル回路やコンピュータアーキテクチャの学習にも役立ちます。
-
C++で10進数を16進数に変換するプログラムの作り方
10進数の数値が入力として与えられたとき、その数値を16進数に変換するのが本記事の目的です。 コンピュータの世界では、16進数は基数16で表現され、10進数は基数10で表現されます。10進数は0〜9の値を使って表されるのに対し、16進数は0〜15の数字を持ちます。そのうち10は「A」、11は「B」、12は「C」、13は「D」、14は「E」、15は「F」として表されます。 10進数から16進数への変換手順 10進数を16進数に変換するには、以下の手順に従います。 まず、与えられた数値を変換先の基数で割ります。たとえば、6789を16進数に変換する場合、基数である16で6789を割り、商を求め
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余