public class ShiLiu {
public static void main(String[] args) {
System.out.printf("%x",-1);
}
}
输出是八个f
不明白为什么是八位十六进制?求指教
public class ShiLiu {
public static void main(String[] args) {
System.out.printf("%x",-1);
}
}
输出是八个f
不明白为什么是八位十六进制?求指教
请复习一下码制:原码、反码、补码、移码。
整数在计算机是按补码存储的,代码中的-1是int型,占4个字节即32位,计算其原、反、补码过程如下:
-1的原码:00000000 00000000 00000000 00000001
负数的反码是其原码各位取反,所以:
-1的反码:11111111 11111111 11111111 11111110
负数的补码是其反码+1,所以:
-1的补码:11111111 11111111 11111111 11111111
写成十六进制即FF FF FF FF