int类型的-3的32位表示为:11111111111111111111111111111101
将32位翻转的时候应该为:10111111111111111111111111111111
当时在LeetCode做这题的时候想的是用字符串翻转,因为StringBuilder类中有reverse方法正好可以利用。但是发现,程序执行这一句代码的时候
int i1 = Integer.parseInt("11111111111111111111111111111101", 2);
就会抛出异常这样的异常警告
查找原因后知道,int类型是4字节,总共32位,但是Java中都是有符号类型,有符号类型的数最高位都是用来区分整数和负数的,把"11111111111111111111111111111101"放入parseInt()函数中便会抛出这样的异常。
解决方法:使用Integer类中另一个方法parseUnsignedInt(),把这个字符串的32位数看作成无符号类型。:
int i1 = Integer.parseUnsignedInt("11111111111111111111111111111101", 2);



