190. Reverse Bits
知识点
1. java中int和binary之间互相转换的自带函数
Integer.toBinaryString()//int转成binary
Integer.parseInt(strToBeParsed, base)//bianry转回int
2. int的最大值是231-1,用二进制表示就是有31个1,int有32位,第一位是表示符号,java中没有unsigned int,如果有的话是32位
这题用string的方法做是:
1 public int reverseBits(int n) { 2 StringBuilder sb = new StringBuilder(); 3 String binaryStr = Integer.toBinaryString(n); 4 for(int i = 0; i < 32 - binaryStr.length(); i++) { 5 sb.append('0'); 6 } 7 sb.append(binaryStr); 8 sb.reverse(); 9 long resLong = Long.parseLong(sb.toString(), 2); 10 return (int)resLong; 11 }
不用考虑溢出的情况,因为unsigned int用32位表示,无论如何也不会溢出,但是需要转成long是因为int本身只有31位