为什么Integer.parseInt(String s,2)和Integer.toBinaryString(int i)不兼容?

时间:2013-02-11 09:39:31

标签: java

为什么这两种方法在处理二进制数时会使用两种不同的方法?在Integer.parseInt(String s, 2)方法中表示负二进制数的字符串应以-字符开头,但Integer.toBinaryString(int i)返回前面加1的字符串。所以,这段代码

Integer.parseInt(Integer.toBinaryString(-1), 2);

抛出java.lang.NumberFormatException。这种行为的原因是什么?

2 个答案:

答案 0 :(得分:2)

这是设计上的; Integer.toBinaryString

  

将整数参数的字符串表示形式返回为基数为2的无符号整数

(重点补充)。

即,toBinaryString提供了一种将整数格式化为公共two's complement representation的方法,这是大多数处理器在内部实际存储有符号整数的方式。

答案 1 :(得分:0)

Integer::parseInt(String,int)期待一个字符串,因此它正在查找负数的-符号。而Integer::toBinaryString(int)用于为您提供输入的二进制等效值。在Binary中,负数由2的Compliment表示。

相关问题