-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreverse_bits.py
More file actions
31 lines (27 loc) · 1.21 KB
/
Copy pathreverse_bits.py
File metadata and controls
31 lines (27 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
# Reverse Bits
You are given a 32-bit unsigned integer n. Your task is to reverse
the order of its bits and return the resulting integer.
----------------------
1010 >> 1 0
101 >> 1 01
10 >> 1 010
1 >> 1 0101
"""""
def reverse_bits(num):
rev = 0
for _ in range(32): # 32 bit
rev = (rev << 1) | (num & 1) # left shift + add the last bit of num
num = num >> 1
return rev
if __name__ == '__main__':
from utils import test
test(reverse_bits(0b10000000000000000000000000000000), 0b00000000000000000000000000000001)
test(reverse_bits(0b00000000000000000000000000000001), 0b10000000000000000000000000000000)
test(reverse_bits(0b00000000000000000000000000011010), 0b01011000000000000000000000000000)
test(reverse_bits(0b00000000000000000000000010000000), 0b00000001000000000000000000000000)
test(reverse_bits(0b00000000000000000000000011000000), 0b00000011000000000000000000000000)
test(reverse_bits(0b00000000000000000000000011001000), 0b00010011000000000000000000000000)
test(reverse_bits(0b01010101010101010101010101010101), 0b10101010101010101010101010101010)
from utils import plot_time_complexity
plot_time_complexity(reverse_bits, lambda n: n)