티스토리 뷰

728x90

이진수를 십진수로 변환하는 방법은 각 이진수의 자릿값을 확인하고, 그 자릿값에 해당하는 2의 거듭제곱을 이용해 합산하는 방식입니다.

이진수에서 십진수로 변환하는 단계

1. 이진수의 자릿값을 확인: 오른쪽 끝(1의 자리)부터 각 자릿값을 계산합니다.

2. 1인 자릿수에 해당하는 2의 거듭제곱값을 모두 더합니다: 이진수에서 1이 있는 자릿수의 2의 거듭제곱을 합산하여 십진수로 변환합니다.

예시: 101110(이진수)

이진수 101110을 십진수로 변환하는 방법을 살펴보겠습니다.

1. 1이 있는 자리의 2의 거듭제곱값 계산:

2. 값을 모두 더합니다:

 32+8+4+2=46

즉, 101110(이진수)46(십진수)가 됩니다.

이진수를 십진수로 변환하는 수식

이진수를 십진수로 변환할 때, n자리 이진수d(n), d(n-1), ..., d(0)이라 하면 변환된 십진수 값은 다음과 같이 계산됩니다.

C언어로 이진수를 십진수로 변환하는 방법

#include <stdio.h>

int main() {
    int input = 101110;  // 이진수 값 (십진수로 변환할 대상)
    int di = 1;          // 2의 거듭제곱값 (1의 자리부터 시작)
    int sum = 0;         // 십진수 값을 저장할 변수

    while (input != 0) {
        // 현재 자릿수의 값을 추출하고, 2의 거듭제곱을 곱한 값을 합산
        sum = sum + (input % 10) * di;
        di = di * 2;      // 2의 거듭제곱 값을 업데이트
        input = input / 10;  // 다음 자릿수를 가져오기 위해 10으로 나누기
    }

    printf("십진수 값: %d\n", sum);  // 결과 출력
    return 0;
}

코드 설명:

  1. input: 이진수를 저장합니다 (101110).
  2. di: 2의 거듭제곱 값을 저장하는 변수로, 처음엔 20=12^0 = 1부터 시작하여 계속 2배씩 곱해나갑니다.
  3. sum: 십진수 변환 결과를 저장할 변수입니다.
  4. while 루프: input 값이 0이 될 때까지 반복해서 각 자릿수를 가져와 계산합니다.
    • input % 10: 이진수의 현재 자릿수를 추출합니다.
    • input / 10: 다음 자릿수로 이동하기 위해 input 값을 10으로 나눕니다.
728x90