LeetCode 190.颠倒二进制位

题目描述

颠倒给定的 32 位无符号整数的二进制位。

示例:

输入: 43261596
输出: 964176192
解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 ,
     返回 964176192,其二进制表示形式为 00111001011110000010100101000000 。

进阶:
如果多次调用这个函数,你将如何优化你的算法?

思路

通过位运算wiki,依次截取n的二进制位的低位,放入result的高位。这一题是简单题,需掌握位运算

AC代码(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++)
            ans|=((n>>>i)&1)<<(31-i);
        return ans;
    }
}

你可能感兴趣的:(LeetCode 190.颠倒二进制位)