← Bit Manipulation

Reverse Bits

Easy
Python
def reverse_bits(n):
    result=0
    for _ in range(32):
        result=(result<<1)|(n&1); n>>=1
    return result
Java
public int reverseBits(int n){
    int result=0;
    for(int i=0;i<32;i++){
        result=(result<<1)|(n&1); n>>>=1;
    } return result;
}

Key Insight

Python >> vs Java >>> unsigned shift.

Python → Java Differences

  • >> vs >>> unsigned shift
  • range(32) vs i<32
  • 32-bit reversal identical
Python
def reverse_bits(n):
    result=0
    for _ in range(32):
        result=(result<<1)|(n&1); n>>=1
    return result
Java
public int reverseBits(int n){
    int result=0;
    for(int i=0;i<32;i++){
        result=(result<<1)|(n&1); n>>>=1;
    } return result;
}

Algorithm Steps

1. For 32 bits
2. Add LSB to result
3. Shift