㈠ 关于java中负数计算的一些问题
给你用8位的解释一下:
-3的补码转换过程:(1)、先写出-3的原码为 1000 0011(最前边的1为符号位),然后求出-3的反码为 1111 1100,则-3的补码就为1111 1101 ,其中原码转补码的规则为除过符号位,逐位取反,末尾加1,所以-3的补码为:1111 1101。
右移两位,就变为1111 1111,其中高位用1填充。
㈡ JDK Integer.java的toString为什么i是正数要转换为负数处理
Integer.max_value = 01111111 111111111111111111111111
+1 = 10000000 00000000 00000000 00000000
最高位是符号位为1,这个数是负数,负数的源码是补码取反+1,刚好等于Integer.min_value
结果当然是负数了,Integer的最小值
㈢ 为什么java中文转byte出现负数
GBK采用双字节8位表示,总体编码范围为 8140 -- FEFE,首字节在 81 -- FE 之间,尾字节在 40 -- FE 之间。
ASCII是7位编码,只使用前7位,第8位补0,所以转换成整数始终为正数,而GBK是8位编码,也就是说一个字节中的第8位可以为1,如1010 1101,而将其转换成byte类型时,byte值为10101101,以补码存储,第8位被当成符号位,当然是负数了,值为:-83。
“何”字的GBK编码是:BA CE(1011 1010 1100 1110),两个字节第8位都为1,对byte类型来说,都被理解为最高位符号位。这样值就变成-70和-50了。
㈣ java里用Integer.parseInt()把负数的二进制转化十进制会抛异常怎么办,有什么办法能转化
Integer.parseInt(String s, int radix) 这个方法本身就不能转负数,只能转正数。如果你想转换-1,那只能是 Integer.parseInt("-1",2),同理,转-123,只能 Integer.parseInt("-1111011",2),即在本身正数对应2进制之前加一个“-”号。
对于“已知一个负整数的二进制数,求这个数的十进制数”这类问题的话,那么方法如下:
对字符串操作,取反码,然后再按照上文所述方式转换,就可以得到所求负数+1,再-1,就可以得到所求负数
记得给分呦,亲~~~~
㈤ java如何表示负数
int i = -1;望采纳,你不想使用负号标示那就用2进制呗