이번 글에서는 주어진 정수의 비트(bit) 순서를 거꾸로 뒤집는 자바스크립트 프로그램을 작성해 보겠습니다.
예를 들어 다음과 같습니다.
56 -> 111000
비트를 뒤집으면 7 -> 111
또 다른 예시입니다.
234 -> 11101010
비트를 뒤집으면 87 -> 1010111
접근 방식
가장 간단하고 직관적인 방법은 숫자를 2진수 문자열로 변환한 뒤, 문자열의 순서를 뒤집고, 이를 다시 10진수 정수로 되돌리는 것입니다. 구체적인 단계는 다음과 같습니다.
toString(2)메서드를 사용해 숫자를 2진수 문자열로 변환합니다.split('')으로 문자열을 개별 문자 배열로 나눈 후reverse()로 순서를 뒤집습니다.join('')으로 배열을 다시 하나의 문자열로 합칩니다.parseInt(str, 2)를 사용해 뒤집힌 2진수 문자열을 10진수 정수로 변환해 반환합니다.
예제 코드
const num1 = 789;
const num = 43;
const reverseBits = (num = 1) => {
const str = num.toString(2);
const arr = str.split('').reverse();
const arrStr = arr.join('');
const reversedNum = parseInt(arrStr, 2);
return reversedNum;
}
console.log(reverseBits(num));
console.log(reverseBits(num1));
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다.
53
675
위 코드에서 43은 2진수로 101011이며, 이를 뒤집으면 110101, 즉 10진수 53이 됩니다. 마찬가지로 789는 2진수 1100010101이고, 뒤집으면 1010100011, 즉 675가 됩니다.