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 の場合:

  1. number をスタックに配置します
  2. number/2 を使用して関数を再帰的に呼び出す
  3. スタックから 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:

  1. number>0 かどうかを確認します
  2. 右シフト演算子を 1 ビット適用してから、関数を再帰的に呼び出します。
  3. 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