题目详情
解题思路
(1)异或运算
(2)取模求和
代码实现
(异或运算 C#)
public class Solution {
public uint reverseBits(uint n) {
uint res = 0;
for (int i = 0; i <= 31; i++) {
res ^= (n & (1U << i)) != 0 ? 1U << (31 - i) : 0;
}
//往32个0里面填充1
//n&(1<<i) 判断从后数第i位是0还是1
// 如果是1的话 在对应位置填充(原本位是0 0和1异或运算是1 0和0异或是0不变)
//1U U是unsigned
return res;
}
}
(取模求和 C#)
public class Solution {
public uint reverseBits(uint n) {
uint res = 0;
for (int i = 0; i < 32; i++) {
res = (res << 1) + (n & 1);
n >>= 1;
}
return res;
}
}