颠倒给定的 32 位无符号整数的二进制位。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func reverseBits(num uint32) uint32 {
var i uint32
for i = 0; i <= 15; i++ {
head, tail := BitGet(num, i), BitGet(num, 31 - i)
num = BitSet(num, i, tail)
num = BitSet(num, 31 - i, head)
}
return num
}
func BitGet(num uint32, pos uint32) uint32 {
// 获得第pos位的值
return (num & (1 << pos)) >> pos
}
func BitSet(num uint32, pos uint32, value uint32) uint32 {
// 重置第pos位为0
num = num & ( ^(1 << pos))
// 设置第pos位为:value
return num | (value << pos)
}