36.4配列を使用して10進数をバイナリに変換


10進数を2進数に変換します。


10進数をシェアが0になるまで2に分け続け、残りを逆順に読み取ると2進数になります.

[10進数を2進数に変換]
#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	int decimal;
	int binary[20] = { 0, };
	int position = 0; //binary 자릿수

	printf("10진수를 입력하세요");
	scanf("%d", &decimal);

	while (1) {
		binary[position] = decimal % 2; // 2로 나누었을 때의 나머지를 배열에 저장
		decimal /= 2; // 2로 나눈 몫을 저장
		position++; // 자릿수 변경

		if (decimal == 0) // 몫이 0이되면 반복문 종료
			break;
	}

	// 배열의 요소 역순으로 출력
	for (int i = position - 1; i >= 0; i--)
	{
		printf("2진수로 변환 : %d", binary[i]);
	}
	printf("\n");
	return 0;
}

10進入力の受信

  • scanf 함수ユーザが入力した10進数を受け入れ、変数10進数に格納する.
  • バイナリへの変換(無限ループ)

  • 10進数からバイナリフォーマットへの変換は、同じ計算を繰り返す構造であるため、whileを使用して無限ループを作成
  • binary[positon] = decimal % 2十進数を2で割ったときの余剰値を求め、バイナリ配列に入れる.
  • decimalを2で割ったシェアは再びdecimalに保存される.
  • 計算が完了したら、位置値を増やして次の位置を保存します.(桁数変更)
  • 半木戸を閉める

  • decimalは0(商は0)break繰り返し文の終了
  • アレイ内の要素の逆の順序で出力

  • 逆順で出力する際に注意すべき点は、位置から繰り返し、最初からアレイから外れていることです.❗❗
  • したがってposition-1から0のインデックスを減らす必要があります.
  • ソース


    https://dojang.io/mod/page/view.php?id=301