190 Reverse Bits 颠倒二进制位

颠倒给定的32位无符号整数的二进制位。
例如,给定输入 43261596(二进制表示为 00000010100101000001111010011100 ),返回 964176192(二进制表示为 00111001011110000010100101000000)。
问题进阶:
如果多次调用这个函数,你将如何优化它?

详见:https://leetcode.com/problems/reverse-bits/description/

Java实现:只需要把要翻转的数从右向左一位位的取出来,如果取出来的是1,将结果res左移一位并且加上1;如果取出来的是0,将结果res左移一位,然后将n右移一位即可

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        int res=0;
        for(int i=0;i<32;++i){
            if((n&1)==1){
                res=(res<<1)+1;
            }else{
                res=res<<1;
            }
            n=n>>1;
        }
        return res;
    }
}

参考:https://www.cnblogs.com/grandyang/p/4321355.html

posted on 2018-04-08 15:39  lina2014  阅读(374)  评论(0编辑  收藏  举报

导航