Integer.valueOf 不适用于 Java 中 -1 的二进制表示

Integer.valueOf not working for binary representation of -1 in Java

以下代码尝试输出以从其 2 的补码二进制表示中获取 -1,但给出 NumberFormatException。

System.out.println(Integer.parseInt(Integer.toBinaryString(-1), 2));  //Raises Exception

System.out.println(Integer.valueOf("11111111111111111111111111111111", 2));  //Raises Exception

事实上 Integer.valueOf 似乎不适用于任何有符号负数的二进制表示。为什么代码输出错误?

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