据我所知,当使用2的补码时,第一个数字是1,那么你翻转数字并找到新的值字节并使其成为负数。javadoc说Integer.parseInt(String s,radix)和Integer.valueOf(String s,radix)都应该返回一个有符号整数对象,但是当我用这个测试它时:Java - Integer.parseInt()当radix = 2时不返回负数
System.out.println(Integer.parseInt("10000001", 2));
System.out.println(Integer.valueOf("10000001", 2));
我得到:
129
129
即使我的计算让我-127。什么有趣的是,
System.out.println(Integer.parseInt("-10000001", 2));
打印出:
-129
任何人都知道不同的Java方法,如果你输入一个字节(和基数= 2),则该方法会返回一个正确签名的值?
也许是因为它返回的'byte'的'int'呢? – Mysticial 2013-03-14 16:56:56