题目
颠倒给定的 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
;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-16020.html