Java - Integer.parseInt()在radix = 2时不返回负数

Yaz*_*zra 2 java binary parseint

据我所知,当使用2的补码,并且第一个数字为1时,则翻转数字并找到新字节的值并使其成为负数.javadoc表示Integer.parseInt(String s,radix) )和Integer.valueOf(String s,radix)都应该返回一个有符号的整数对象,但是当我用它测试它时:

System.out.println(Integer.parseInt("10000001", 2));

System.out.println(Integer.valueOf("10000001", 2));
Run Code Online (Sandbox Code Playgroud)

我明白了:

129

129
Run Code Online (Sandbox Code Playgroud)

即使我的计算得到我-127.有趣的是

System.out.println(Integer.parseInt("-10000001", 2));
Run Code Online (Sandbox Code Playgroud)

打印出来:

-129
Run Code Online (Sandbox Code Playgroud)

任何人都知道一个不同的java方法,如果你输入一个字节(和radix = 2),那么该方法将返回一个正确签名的值?

lee*_*d92 7

如果它总是一个字节,那么这应该可以解决问题:

int i = Integer.parseInt("10000001", 2);
byte b = (byte) i;
Run Code Online (Sandbox Code Playgroud)

整数值将为129,但是当您将其转换为字节时,它将更改为-127.