计算机只能处理2进制数据(常常是补码!),计算机内部没有10进制和16进制,10进制是人类处理数据的习惯,Java利用API提供的的算法(方法)实现10进制的处理。16进制是便捷的2进制书写格式。java
一切交给计算机处理的数据,都要转化为2进制。算法
计算机不认识正负数,因此本来二进制是没有负数的,但由于运算须要,正负二进制是人为规定的,因此才有了补码(补充的码)。eclipse
计算机在输入输出的时候,依照人的习惯,利用算法实现10进制输入输出。spa
以4位补码为例:code
见下图:blog
由图中能够看出从上到下逐一加1,而且以粉色横线为镜面,上下互为反码,这也是补码取反对称现象,由此可得出——~n=-n-1(~n:n取反)ip
0x是16进制的前缀,0是8进制的前缀。0x7fffffff是最大的16进制数,0x80000000是最小的16进制数数学
eclipse中数字的2进制和16进制不显示高位的0。class
1 package Test; 2 3 import java.util.Scanner; 4 5 public class Test { 6 public static void main(String[] args) { 7 System.out.println("请输入要查看2进制的数字:"); 8 Scanner in = new Scanner(System.in); 9 int n = in.nextInt(); 10 System.out.println(n+"的2进制表示是:"+Integer.toBinaryString(n)); 11 System.out.println(n+"的16进制表示是:"+Integer.toHexString(n)); 12 System.out.println(~100);//使用公式~n=-n-1 13 } 14 }