为什么这两种方法在处理二进制数时会使用两种不同的方法?在Integer.parseInt(String s, 2)
方法中表示负二进制数的字符串应以-
字符开头,但Integer.toBinaryString(int i)
返回前面加1的字符串。所以,这段代码
Integer.parseInt(Integer.toBinaryString(-1), 2);
抛出java.lang.NumberFormatException
。这种行为的原因是什么?
答案 0 :(得分:2)
这是设计上的; Integer.toBinaryString
将整数参数的字符串表示形式返回为基数为2的无符号整数。
(重点补充)。
即,toBinaryString
提供了一种将整数格式化为公共two's complement representation的方法,这是大多数处理器在内部实际存储有符号整数的方式。
答案 1 :(得分:0)
Integer::parseInt(String,int)
期待一个字符串,因此它正在查找负数的-
符号。而Integer::toBinaryString(int)
用于为您提供输入的二进制等效值。在Binary中,负数由2的Compliment表示。