コンピュータには 10 進数を表すためのストレージ機能がないため、技術的には 2 進数を 10 進数に変換することはできません。
実際には、これはばかげているように聞こえるかもしれません。しかし、これらの 10 進数表現が実際に 10 進数で格納されることはありません。コンピュータが行う唯一のことは、数値を表示するときに数値を 10 進表現に変換することです。そして、この変換は、プログラムの構築とライブラリの設計に関連しています。
C言語の小さな例を挙げます。C では、符号付きおよび符号なしの整数変数があります。プログラムを書いているとき、これらの変数は数値をメモリに格納するために使用されます。彼らの兆候について誰が知っていますか?コンパイラ。アセンブリ言語には、符号付き演算と符号なし演算があります。コンパイラはすべての変数の符号を追跡し、符号付きおよび符号なしの場合に適切なコードを生成します。したがって、プログラムは、コンパイル時に符号付きまたは符号なしの整数を完全に処理します。
センテンスを使用しprintf
て整数変数を出力し、%d
フォーマット コンバーターを使用して値を 10 進表現で出力したとします。この変換はprintf
、C の標準入出力ライブラリで定義されている関数によって処理されます。この関数は、変数をメモリから読み取り、単純な基数変換アルゴリズムを使用して 2 進数表現を 10 進数表現に変換します。しかし、アルゴリズムのターゲットは整数ではなく文字シーケンスです。したがって、このアルゴリズムは 2 つのことを行います。どちらも 2 進数から 10 進数への変換です。ビットを char 値 (より正確には ASCII コード) に変換します。printf
変換を正常に実行するには、数値の符号を知っている必要があります。この情報は、コンパイル時に配置されたコンパイラ構造によって再び提供されます。これらの構造を使用するprintf
ことで、整数が符号付きか符号なしかをチェックし、適切な変換方法を使用できます。
他のプログラミング言語も同様の道をたどります。基本的に、数値は常に 2 進数で格納されます。符号付きまたは符号なしの表現は、コンパイラ/インタプリタによって認識されているため、一般的な知識です。10 進変換は見た目上の理由でのみ実行され、変換の対象は文字列または文字列です。