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

JavaScript로 십진수의 비트를 반전해 새로운 십진수 반환하기

문제 정의

십진수 하나를 입력받아 이진수로 변환한 다음, 각 비트를 반전시키고(1은 0으로, 0은 1로), 마지막으로 새롭게 만들어진 이진수에 해당하는 십진수 값을 반환하는 JavaScript 함수를 작성하는 것이 목표입니다.

예제 코드

다음은 위 문제를 해결하는 전체 코드입니다.

const num = 45657;
const reverseBitsAndConvert = (num = 1) => {
    const binary = num.toString(2);
    let newBinary = '';
    for(let i = 0; i < binary.length; i++){
        const bit = binary[i];
        newBinary += bit === '1' ? '0' : '1';
    };
    const decimal = parseInt(newBinary, 2);
    return decimal;
};
console.log(reverseBitsAndConvert(num));

출력 결과

19878

코드 동작 원리

위 코드는 크게 세 단계로 나누어 이해할 수 있습니다.

1단계: 십진수를 이진수로 변환

num.toString(2)를 호출하면 숫자가 2진법 표현의 문자열로 변환됩니다. 예를 들어 45657은 '1011001001011001'이라는 이진수 문자열이 됩니다.

2단계: 각 비트 반전

for 루프로 이진수 문자열을 한 글자씩 순회하면서, 현재 비트가 '1'이면 '0'을, '0'이면 '1'을 새 문자열에 추가합니다. 삼항 연산자(? :)를 활용해 조건 분기를 간결하게 처리했습니다.

3단계: 반전된 이진수를 다시 십진수로 변환

parseInt(newBinary, 2)처럼 두 번째 인자로 진법을 지정하면, 반전된 이진수 문자열을 손쉽게 십진수 숫자로 되돌릴 수 있습니다. 최종적으로 이 값을 반환하면 45657의 모든 비트를 반전한 결과인 19878이 출력됩니다.