通过万岁!!!
- 题目:给你一个数n,将这个数的32位二进制进行反转后,输出最终结果。
- 思路:我们首先定义一个ans,然后我们对这个数跟2的i次方也就是1<<i进行与运算,如果不等于0,则表示n的第i位是1,然后我们将ans加上2的31-i次方即可,也就是加上1<<(31-i)。
- 技巧:位运算
java代码
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int ans = 0;
for (int i = 0; i < 32; i++) {
if ((n & (1 << i)) != 0) {
ans += (1 << (31 - i));
}
}
return ans;
}
}
- 总结:题目的关键是找到位中的1。