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位

 

posted @ 2016-07-21 05:01  warmland  阅读(231)  评论(0编辑  收藏  举报