【发布时间】:2020-03-18 16:27:09
【问题描述】:
以下代码尝试从其 2 的补码二进制表示中输出 -1,但给出了 NumberFormatException。
System.out.println(Integer.parseInt(Integer.toBinaryString(-1), 2)); //Raises Exception
System.out.println(Integer.valueOf("11111111111111111111111111111111", 2)); //Raises Exception
Infact Integer.valueOf 似乎不适用于任何有符号负数的二进制表示。为什么代码输出错误?
【问题讨论】:
-
valueOf应该如何知道这是一个二进制数,更不用说 2 的补码数了? -
x86 处理器和现代编程语言使用 2 的补码系统 en.wikipedia.org/wiki/Integer_(computer_science)
-
@ScottHunter valueOf 的第二个参数采用基数,所以它不应该知道吗?我错过了什么吗?