Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 10진수를 2진수로 변환하는 방법

개요

이 글에서는 정수를 10진법(base-10)에서 2진법(base-2)으로 변환하는 방법을 다룹니다. 정수의 크기는 32비트로 가정하며, 변환은 숫자를 진법의 밑값(base)으로 반복해서 나누는 방식으로 수행됩니다. 컴퓨터는 이러한 과정을 통해 정수 값을 바이트 단위로 변환하여 처리합니다.

입력: 10

출력: 1010

변환 원리 설명

10진수 10을 2진수로 변환하는 과정을 단계별로 살펴보겠습니다.

  • 10을 2로 나누면 몫은 5, 나머지는 0입니다. 첫 번째 자리는 0입니다.

  • 몫인 5를 다시 2로 나누면 몫은 2, 나머지는 1입니다. 두 번째 자리는 1입니다.

  • 2를 2로 나누면 몫은 1, 나머지는 0입니다. 세 번째 자리는 0입니다.

  • 1을 2로 나누면 몫은 0, 나머지는 1입니다. 네 번째 자리는 1입니다.

  • 숫자가 0이 되면 반복을 종료하고, 지금까지 구한 나머지들을 역순으로 출력합니다.

따라서 10진수 10에 해당하는 2진수는 1010입니다.

C 코드 예제

#include <iostream>
using namespace std;
int main() {
    long n, d, r, binary = 0;
    n = 10;
    d = n;
    int temp = 1;
    while (n != 0) {
        r = n % 2;          // 나머지 구하기
        n = n / 2;          // 몫으로 갱신
        binary = binary + r * temp;  // 자릿수 누적
        temp = temp * 10;   // 자릿수 이동
    }
    printf("%ld", binary);
    return 0;
}

코드 동작 설명

  • r = n % 2; : 현재 숫자를 2로 나눈 나머지(0 또는 1)를 구합니다.

  • n = n / 2; : 몫을 새로운 값으로 사용하여 다음 반복을 준비합니다.

  • binary = binary + r * temp; : 구한 나머지를 자릿수에 맞게 결과 변수에 누적합니다.

  • temp = temp * 10; : 다음 반복에서 한 자리씩 왼쪽으로 이동하기 위해 temp를 10배 증가시킵니다.

이 알고리즘은 나눗셈과 나머지 연산만을 활용하므로 시간 복잡도는 O(log n)이며, 입력된 10진수를 손쉽게 2진수 형태로 출력할 수 있습니다.