【位运算???】190 颠倒二进制位

    技术2022-07-11  99

    题目

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

    思路

    取当前 n 的最后一位:n & 1 将最后一位移动到对应位置,第一次为 31 位,第二次是 30 位,即:31、30、29… 1、0,写作代码 bit << 31; 退出条件,二进制反转时,如果剩余位数全位 0,则可以不用再反转。 <<        左移       右侧空补位0 />>        右移        左侧空位补最高位,即符号位 />>>       无符号右移     左侧空位补0

    代码

    public int reverseBits(int n) { int ans = 0; for(int bitSize = 31;n!=0;n = n >>>1,bitSize--){ ans+=(n&1)<<bitSize; } return ans; }
    Processed: 0.019, SQL: 9