Leetcode Java Reverse Bits

업데이트:

문제

Link

코드

public class Solution {

  // you need treat n as an unsigned value
  public int reverseBits(int n) {
    int result = 0;
    for (int i = 0; i < 32; i++) {
      result = (result <<= 1) + (n & 1);
      n >>= 1;
    }
    return result;
  }

}

결과

Link

설명

  1. 주어진 정수 n의 32bit code를 반전한 정수를 구하는 문제이다.

  2. 결과를 저장할 result 변수를 0으로 초기화한다.

  3. 32번 반복을 통해 주어진 정수 n의 32bit code를 반전시켜 result에 저장한다.
    • result의 bit를 좌측으로 한 칸 이동시킨 값과 n과 1의 Bit 논리곱(AND)인 ‘&’을 이용하여 두 값이 동일하게 1인지를 검증한 결과의 합을 result에 넣어준다.
    • n의 bit를 우측으로 한 칸 이동시킨다.
  4. 반복이 완료되면 주어진 정수 n의 32bit code를 반전시킨 정수를 저장한 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기