Day 89
题目描述

思路
二进制的算法,将十进制转化为二进制,有一点需要注意,直接采取库函数转化为二进制再反转会出现问题(这也是为什么我要补0的原因),因为转化过去不满足32位的二进制,前面不会当作无符号而是当作有符号数,顶位会当作符号位自动补,导致反转得到的值不对。
java
class Solution {
public int reverseBits(int n) {
StringBuilder res=new StringBuilder();
int num=2;
while(n!=0){
res.append(n%2);
n=n/2;
num=num<<1;
}
while(res.length()<32) {
res.append(0);
}
return Integer.parseInt(res.toString(),2);
}
}