Q 4.3 비트 뒤집기
64비트 숫자가 주어졌을 때 이를 역순으로 재구성한 숫자를 반환하는 코드를 작성하시오.
ex) 16비트 예시 1110 0000 0000 0001 -> 1000 000 000 0111
한번만 연산을 한다면 4.2 비트스왑과 같은 방법으로 최하위 32비트와 최상위 32비트를 스왑하면 된다.
그러나 해당 연산을 반복적으로 한다면, 조금 더 효율적인 방법을 생각해 볼 수 있다.
64비트를 4개로 나누어 16비트가 4개 있다고 생각하자. 이를 각각 y3, y2, y1, y0 에 역순으로 저장해 룩업테이블을 만든다.
이를 다시 y0, y1, y2, y3순서로 출력하면 된다.
코드와 코딩결과는 다음과 같다.
'C++ 학습 > C++ 코딩인터뷰[4장]' 카테고리의 다른 글
[4. 기본자료형] 4.6 산술 연산자 없이 나눗셈 계산하기 (0) | 2024.12.26 |
---|---|
[4. 기본자료형] 4.5 곱셈과 덧셈 없이 x dot y 계산하기 (0) | 2024.12.26 |
[4. 기본자료형] 4.4 같은 무게를 가진 가장 가까운 정수 찾기 (0) | 2024.12.26 |
[4. 기본자료형] 4.2 비트 스왑 (1) | 2024.12.19 |
[4. 기본자료형] 4.1 패리티 계산하기 (1) | 2024.12.19 |