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),那么该方法将返回一个正确签名的值?
如果它总是一个字节,那么这应该可以解决问题:
int i = Integer.parseInt("10000001", 2);
byte b = (byte) i;
Run Code Online (Sandbox Code Playgroud)
整数值将为129,但是当您将其转换为字节时,它将更改为-127.