【问题标题】:Integer.valueOf not working for binary representation of -1 in JavaInteger.valueOf 不适用于 Java 中 -1 的二进制表示
【发布时间】: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 的第二个参数采用基数,所以它不应该知道吗?我错过了什么吗?

标签: java math integer bit


【解决方案1】:

valueOf 不知道 2 的补码,因此它认为您要求在基数 2 中隐藏一个太大而无法放入 int 的无符号值。 (尝试删除1 之一。)

【讨论】:

  • 哦。那么,valueOf 将二进制表示视为无符号整数(最后一位除外)?
  • @user85421:这意味着它会将值视为负值如果包含负号
  • 我认为如果他们明确指定该文件会更清楚,而不是给出一些示例(他们在下面给出)。
  • @user85421:错过了对作者的引用。
猜你喜欢
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
相关资源
最近更新 更多