190. Reverse Bits

https://leetcode.com/problems/reverse-bits/

Approach 1: Bit by Bit\
Explanation

1
2
3
4
5
6
7
8
9
10
11
12
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int res=0;
for(int i=0;i<32;i++){
res+=n&1;
n>>>=1;
if(i<31) res<<=1;
}
return res;
}
}

Approach 3: Mask and Shift

1
2
3
4
5
6
7
8
9
10
11
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
n = n >>> 16 | n << 16;
n = (n & 0xff00ff00) >>> 8 | (n & 0x00ff00ff) << 8;
n = (n & 0xf0f0f0f0) >>> 4 | (n & 0x0f0f0f0f) << 4;
n = (n & 0xcccccccc) >>> 2 | (n & 0x33333333) << 2;
n = (n & 0xaaaaaaaa) >>> 1 | (n & 0x55555555) << 1;
return n;
}
}

0%