JavaScript에서 2진수를 10진수로 변환하는 방법
JavaScript에서는 내장 메서드를 활용하거나 직접 알고리즘을 구현하여 2진수(binary)를 10진수(decimal)로 손쉽게 변환할 수 있습니다. 아래에서 가장 많이 사용되는 대표적인 변환 방법과 예제 코드를 소개합니다.
1. parseInt() 함수 사용하기
parseInt() 함수에 두 번째 인자로 진법(radix)을 지정하면 간단하게 변환할 수 있습니다. 2진수 문자열을 10진수로 바꾸려면 진법 값으로 2를 전달하면 됩니다. 이것이 가장 널리 쓰이고 권장되는 방법입니다.
const binary = "1010";
const decimal = parseInt(binary, 2);
console.log(decimal); // 10
2. Number() 객체와 0b 접두사 사용하기
ES6부터 지원되는 2진수 리터럴 접두사 0b를 활용하면 Number() 객체로도 변환이 가능합니다. 코드가 짧아 가독성이 좋다는 장점이 있습니다.
const decimal = Number(0b1010);
console.log(decimal); // 10
3. 반복문으로 직접 구현하기
내장 함수 없이 변환 원리를 이해하고 싶다면, 각 자릿수에 2의 거듭제곱을 곱해 모두 더하는 방식으로 직접 구현할 수 있습니다.
function binaryToDecimal(binaryStr) {
let decimal = 0;
for (let i = 0; i < binaryStr.length; i++) {
decimal += Number(binaryStr[i]) * Math.pow(2, binaryStr.length - 1 - i);
}
return decimal;
}
console.log(binaryToDecimal("1010")); // 10
변환 시 주의사항
입력값이 유효한 2진수인지 반드시 확인해야 합니다. '0'과 '1' 외의 문자가 포함되어 있으면 parseInt()는 NaN을 반환하거나 예상과 다른 결과를 낼 수 있으므로, 정규식(/^[01]+$/)으로 검증한 후 변환하는 것이 안전합니다.
마무리
실무에서는 parseInt(문자열, 2)를 사용하는 것이 가장 간결하고 오류 가능성이 적습니다. 학습 목적이라면 반복문을 활용한 직접 구현을 통해 2진수와 10진수의 변환 원리를 깊이 이해해 보시기 바랍니다.