Introduction
Coddy의 수학 수수께끼 코스 레슨 — 20개 중 18번째.
이진수(binary number)는 2진법 또는 이진 기수법으로 표현된 수로, 일반적으로 "0"(영)과 "1"(일)이라는 두 개의 기호만을 사용하는 수학적 표현 방식입니다. [위키백과, 우리 모두의 백과사전]
표기법 110=12, 210=102, 310=112, 410=1002는 10진법(base-10 numeral system)에서의 숫자 1, 2, 3, 4가 이진법에서의 1, 10, 11, 100과 같음을 의미합니다.
이진법으로 수를 세는 것은 다른 진법에서 수를 세는 것과 비슷합니다. 한 자리 숫자부터 시작하여, 각 기호를 오름차순으로 거치며 수를 세어 나갑니다.
10진수 정수를 그에 해당하는 2진수(이진수)로 변환하려면, 해당 숫자를 2로 나눕니다. 나머지는 최하위 비트(가장 오른쪽 비트)가 됩니다. 몫을 다시 2로 나누고, 그 나머지가 다음 최하위 비트가 됩니다. 이 과정은 몫이 1이 될 때까지 반복됩니다. 2로 나눌 때 각 나머지는 0 또는 1이어야 하므로, (마지막 몫인 1을 포함한) 나머지들의 시퀀스가 이진수 값을 형성합니다. 예를 들어, 510은 다음과 같이 1012로 표현됩니다.
5를 2로 나누면 몫은 2이고 나머지는 1입니다: 5:2 = 2(1). 따라서 최하위 비트는 1입니다. 다음으로, 2:2=1(0)입니다. 따라서 그다음 최하위 비트는 0이고, 그다음 비트는 1입니다.
챌린지
쉬움10진수 정수를 입력받아 그에 해당하는 이진수를 문자열 형식으로 반환하는 함수 calcBinary를 작성하세요.
내장 함수를 사용하지 않고 구현해 보세요.
직접 해보기
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
char* r = calcBinary(n);
printf("%s\n", r);
return 0;
}