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

C++로 10진수를 2진수로 변환하는 프로그램 만들기

컴퓨터 시스템에서 2진수는 2진 기수법(base 2)으로 표현되고, 10진수는 10진 기수법(base 10)으로 표현됩니다. 즉, 2진수는 0과 1 두 개의 숫자만 사용하는 반면, 10진수는 0부터 9까지의 숫자를 사용합니다.

대표적인 10진수와 이에 대응하는 2진수의 예는 다음과 같습니다.

10진수2진수
1501111
1001010
1810010
2711011

10진수 → 2진수 변환 원리

10진수를 2진수로 변환하는 가장 일반적인 방법은 2로 나눈 나머지를 반복적으로 구하는 것입니다. 수를 2로 계속 나누면서 각 단계에서의 나머지(0 또는 1)를 기록하고, 마지막에 나머지들을 역순으로 나열하면 해당 수의 2진 표현이 완성됩니다.

이 과정을 구현한 C++ 프로그램은 다음과 같습니다.

예제 코드

#include <iostream>
using namespace std;
void DecimalToBinary(int n) {
    int binaryNumber[100], num=n;
    int i = 0;
    while (n > 0) {
        binaryNumber[i] = n % 2;
        n = n / 2;
        i++;
    }
    cout<<"Binary form of "<<num<<" is ";
    for (int j = i - 1; j >= 0; j--)
    cout << binaryNumber[j];
    cout<<endl;
}
int main() {
    DecimalToBinary(15);
    DecimalToBinary(10);
    DecimalToBinary(18);
    DecimalToBinary(27);
    return 0;
}

실행 결과

Binary form of 15 is 1111
Binary form of 10 is 1010
Binary form of 18 is 10010
Binary form of 27 is 11011

코드 동작 방식

위 프로그램에서 DecimalToBinary() 함수는 매개변수로 전달받은 10진수 n의 2진 값을 배열 binaryNumber[]에 저장합니다. while 루프가 반복될 때마다 n % 2(n을 2로 나눈 나머지)의 결과가 배열에 차례대로 저장되고, n은 n / 2로 점점 작아집니다.

이 과정을 보여주는 핵심 코드는 다음과 같습니다.

while (n > 0) {
    binaryNumber[i] = n % 2;
    n = n / 2;
    i++;
}

나머지는 낮은 자릿수부터 역순으로 저장되므로, 이후 for 루프를 사용해 배열을 뒤에서부터 앞으로 순회하며 올바른 순서의 2진수를 출력합니다.

cout<<"Binary form of "<<num<<" is ";
for (int j = i - 1; j >= 0; j--)
cout << binaryNumber[j];

main() 함수에는 다양한 10진수 값에 대해 DecimalToBinary()를 호출하는 코드만 포함되어 있습니다.

DecimalToBinary(15);
DecimalToBinary(10);
DecimalToBinary(18);
DecimalToBinary(27);

정리

이 프로그램의 핵심은 세 가지입니다. 첫째, 2로 나눈 나머지를 통해 각 자리의 비트 값을 구하고, 둘째, 몫이 0이 될 때까지 반복하며, 셋째, 저장된 값을 역순으로 출력해 최종 2진수를 얻는 것입니다. 이 방식은 어떤 10진수든 손쉽게 2진수로 변환할 수 있는 기본적이면서도 효율적인 알고리즘입니다.