思路
将n从最后一位开始,通过n & 1得到最后一位,然后通过ans << 1腾出来最后一位,
(ans << 1) | (n & 1)将n的最后一位放到ans的最后一位上。就此循环32次,每一次ans都会左移一位,最终ans中一开始的最后一位会被移到最前面。
代码
public class Solution {
// you need treat n as an unsigned valuepublic int reverseBits(int n) {
int ans = 0;for(int i = 0; i < 32; i++) {
ans = (ans << 1) | (n & 1);n = n >> 1;}return ans;}
}
复杂度
时间复杂度O(1),空间复杂度O(1)