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

문자열 형태의 이진수를 10진수 숫자로 변환하는 JavaScript 프로그램

이번 글에서는 문자열 형태로 입력받은 이진수(binary number)를 10진수(base 10) 값으로 변환하여 반환하는 JavaScript 함수를 작성해 보겠습니다.

구현 방법은 생각보다 간단합니다. for 반복문을 사용해 문자열을 한 글자씩 순회하면서, 지금까지 계산한 값을 2배로 곱한 뒤 현재 비트의 값을 더해 주면 됩니다. 이는 왼쪽에서 오른쪽으로 자릿수를 이동하며 값을 누적하는 방식과 동일합니다.

예제 코드

const binaryToDecimal = binaryStr => {
    let num = 0;
    for(let i = 0; i < binaryStr.length; i++){
        num *= 2;
        num += Number(binaryStr[i]);
    };
    return num;
};
console.log(binaryToDecimal('1101'));
console.log(binaryToDecimal('1101000'));
console.log(binaryToDecimal('10101'));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

13
104
21

동작 원리

예를 들어 '1101'의 경우 동작 과정을 살펴보면 다음과 같습니다.

  • 첫 번째 비트 '1': num = 0 × 2 + 1 = 1
  • 두 번째 비트 '1': num = 1 × 2 + 1 = 3
  • 세 번째 비트 '0': num = 3 × 2 + 0 = 6
  • 네 번째 비트 '1': num = 6 × 2 + 1 = 13

이처럼 각 단계에서 기존 값을 2배로 늘리고 새로운 비트를 더하는 방식으로, 최종적으로 이진수 '1101'에 해당하는 10진수 13이 계산됩니다. 참고로 내장 메서드인 parseInt('1101', 2)를 사용하면 같은 결과를 더 간단하게 얻을 수 있지만, 위 방식은 변환 원리를 직접 구현한다는 점에서 학습 목적에 유용합니다.