36.4 배열을 활용하여 10진수를 2진수로 변환하기

5421 단어 C배열C

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진수를 사용자로부터 입력받고 변수 decimal에 저장한다.

2진수로 변환하기 (무한 루프)

  • 10진수를 2진수로 변환하는 식은 같은 계산을 반복하는 구조이므로 while로 무한루프를 만든다.
  • binary[positon] = decimal % 2와 같이 10진수를 2로 나누었을 때의 나머지를 구하여 binary 배열에 넣어준다.
  • decimal을 2로 나눈 몫을 다시 decimal에 저장한다.
  • 계산이 끝났다면 다음 자리를 저장할 수 있도록 position의 값을 증가시킨다. (자릿수 변경)]

반목문 종료

  • decimal이 0이 되면 (몫이 0이 되면) break로 반복문을 종료한다.

배열의 요소 역순으로 출력

  • ⭐ 역순으로 출력시 주의할 점은 position부터 반복하면 처음부터 배열을 벗어난 상태가 된다는 것이다.❗❗
  • 따라서 positon -1 부터 0까지 인덱스가 감소할 수 있도록 만들어야 한다.


출처

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

좋은 웹페이지 즐겨찾기