ReverseBits

Published at 2021-11-21

class Solution:
    def reverseBits(self, n: int) -> int:
        ans = 0
        for i in range(32):
            ans = (ans << 1) + (n & 1)
            n >>= 1
        return ans

    # 이진수숫자를 ABCD라고 해보면
    # 마지막수부터 검사해서 그게 1이면 1을넣고 얘를 한칸 앞으로 보낼거임
    # 그렇게 계속 반복해서 D가 A위치에 갈때까지!

    # ABCD -> 0001이랑 &연산하면 D가 1이라면 0001일거임
    # ans는 << 했응까 그 마지막에 &연산한걸 더해줌(쉬프트했으면 어차피 끝은 0일거임)
    # 원래의 이진수인 n은 오른쪽쉬프트하고 다시 돌림
    # 이거 반복ㄱㄱ

    # 그니까 이건 슬라이드퍼즐같은거임
class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        uint32_t result= 0;
        for(int i=0; i<32; i++)
            result = (result<<1) + (n>>i &1);

        return result;
    }
};

// 파이썬으로도 품