[LeetCode] #190 颠倒二进制位

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

输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
     因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。

使用Integer的API直接反转

public class Solution {
    public int reverseBits(int n) {
        return Integer.reverse(n);
    }
}

使用位运算符

public class Solution {
    public int reverseBits(int n) {
        int rev = 0;
        for (int i = 0; i < 32 && n != 0; ++i) {
            rev |= (n & 1) << (31 - i);
            n >>>= 1;
        }
        return rev;
    }
}

知识点:

Integer.reverse()方法用于返回通过反转给定参数的二进制的补码表示形式的位顺序生成的值。

java位运算

总结:

posted @ 2021-09-05 23:14  1243741754  阅读(39)  评论(0编辑  收藏  举报