36.4 배열을 활용하여 10진수를 2진수로 변환하기
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
Author And Source
이 문제에 관하여(36.4 배열을 활용하여 10진수를 2진수로 변환하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shuajjjjj/36.4-배열을-활용하여-10진수를-2진수로-변환하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)