关于一个16进制数字的java有关问题~着急等待.
关于一个16进制数字的java问题~着急等待...
看下面的程序,最后i、j的打印结果是什么,给出原因解释~~
------解决方案--------------------
0xFFFFFFF1 :第一位是1,所以应该是个负数
所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
打出来应该是
-15
14
------解决方案--------------------
-15
14
-15的原因是:0xFFFFFFF1是15的原码取反再+1得到的,所以你只需要反过来推就行了。
0xFFFFFFFF是-1
0xFFFFFFFE是-2
……
0xFFFFFFF1是-15
明白了?
看下面的程序,最后i、j的打印结果是什么,给出原因解释~~
- Java code
public class Test { public static void main (String args[]) { int i = 0xFFFFFFF1; int j = ~i; System.out.println(i); System.out.println(j); } }
------解决方案--------------------
0xFFFFFFF1 :第一位是1,所以应该是个负数
所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
打出来应该是
-15
14
------解决方案--------------------
-15
14
-15的原因是:0xFFFFFFF1是15的原码取反再+1得到的,所以你只需要反过来推就行了。
0xFFFFFFFF是-1
0xFFFFFFFE是-2
……
0xFFFFFFF1是-15
明白了?