力扣面试150题--颠倒二进制位
Day 89
题目描述
思路
二进制的算法,将十进制转化为二进制,有一点需要注意,直接采取库函数转化为二进制再反转会出现问题(这也是为什么我要补0的原因),因为转化过去不满足32位的二进制,前面不会当作无符号而是当作有符号数,顶位会当作符号位自动补,导致反转得到的值不对。
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);}
}