HOWTO · C
C 言語で数値の 2 進数を表示する
C 言語を使用して 10 進数を 2 進数に変換するための完全なプログラミングチュートリアルです。
このページの内容
この簡単なガイドは、C 言語を使用した 10 進数から 2 進数へのシステムコンバーターの実装に関するものです。実装に直接ジャンプする前に、まず 2 進数システムを要約し、次に複数の C 実装について説明して、10 進表現を同等の 2 進数に変換します。
2 進数システム
2つの離散状態またはカテゴリ状態で動作するシステムは、バイナリシステムと呼ばれます。同様に、2 進数システムは、1(1)と 0(ゼロ)の 2つの記号のみを使用して数値を表します。
したがって、それはベース 2 システムとしても知られています。
現在、ほとんどのトランジスタベースのロジック回路の実装は、個別のバイナリ状態を使用しています。したがって、最新のデジタルコンピュータはすべて、バイナリシステムを使用してデータを表現、保存、および処理します。
たとえば、6 を 2 進数システムに変換します。
$$
(6)_{10} = (110)_2
$$
ここで、6 はベース 10 の 10 進数システムからの番号であり、対応するバイナリはベース 2 のバイナリ番号システムにある 110 です。この変換のプロセスを見てみましょう。
変換のプロセス
ステップ 1:答えを得るために 6 を 2 で割る。この段階で達成された整数指数を使用して、次のステップの配当を取得します。
商がゼロに達するまで、この方法を続けます。
| 配当 | 残り |
|---|---|
| 6/2 = 3 | 0 |
| 3/2 = 1 | 1 |
| 1/2 = 0 | 1 |
ステップ 2:バイナリは、すべての残りを時系列の逆順(下から上)に収集することによって形成できます。
1 が最上位ビット(MSB)で、0 が最下位ビット(LSB)です。したがって、6 のバイナリは 110 です。
変換のための C 実装
C 言語には、数値を 2 進数システムに変換する方法が複数あります。これは、反復的なソリューションでも再帰的なソリューションでもかまいません。
プログラミングの選択次第です。この記事では、非常に単純な再帰的ソリューションについて説明します。
解決策 1:
number>1 の場合:
numberをスタックに配置しますnumber/2を使用して関数を再帰的に呼び出す- スタックから
numberを取得し、それを 2 で割って、残りを出力します。
#include <stdio.h>
void convertToBinary(unsigned a) {
/* step 1 */
if (a > 1) convertToBinary(a / 2);
/* step 2 */
printf("%d", a % 2);
}
int main() {
// Write C code here
printf("Binary of the number is: ");
convertToBinary(6);
printf("\n");
return 0;
}
このコードスニペットは、次の出力をリリースします。
Binary of the number is: 110
解決策 2:
number>0かどうかを確認します- 右シフト演算子を 1 ビット適用してから、関数を再帰的に呼び出します。
numberのビットを出力します
#include <stdio.h>
void convertToBinary(unsigned n) {
if (n > 1) convertToBinary(n >> 1);
printf("%d", n & 1);
}
int main() {
// Write C code here
printf("Binary of the number is: ");
convertToBinary(8);
printf("\n");
return 0;
}
指定されたコードスニペットの出力は次のとおりです。
Binary of the number is: 1000