简介
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。因为电路的逻辑只有0和1两个状态,这里的0和1并不是数字的0和1,0和1是表示两种不同的状态,0表示低电平,1表示高电平。计算机是由无数个逻辑电路组成的,通过0和1的无限位数和组合来表达信息。
Java内置的进制转换
在Java中内置了几个方法来帮助我们进行各种进制的转换。如下图所示(以Integer整形为例):
代码语言:javascript复制二进制:Integer.toBinaryString(int i)
八进制:Integer.toOctalString(int i)
十八进制:Integer.toHexString(int i)
代码语言:javascript复制二进制转十进制:
Integer.valueOf("0101",2)
Integer.parseInt("11", 2)
八进制:Integer.valueOf("376",8)
十六进制:Integer.valueOf("FFFF",16)
使用Integer类中的parseInt()方法和valueOf()方法都可以将其他进制转化为10进制。
代码语言:javascript复制System.out.println("int最大正数:" Integer.MAX_VALUE);
System.out.println("int最大正数二进制表示:" Integer.toBinaryString(Integer.MAX_VALUE));
System.out.println("int最小负数:" Integer.MIN_VALUE);
System.out.println("int最小负数二进制表示:" Integer.toBinaryString(Integer.MIN_VALUE));
System.out.println("二进制定义打印int能表示的最大数:" 0b01111111_11111111_11111111_11111111);
System.out.println("二进制定义打印int能表示的最小数:" 0b10000000_00000000_00000000_00000000);
System.out.println("43的二进制表现:" Integer.toBinaryString(43));//结果省略了前面的0
System.out.println("-43的二进制表现:" Integer.toBinaryString(-43));
//下划线无意义,只是为了方便看,可以随意写
int a = 0b00000000_00000000_00000000_00000000_00101011;//0b表示为二进制,a相当于十进制的43
int a1 = 0b101011;//这也是十进制的43,只不过省略了上面的0
System.out.println("打印a的值:" a);
System.out.println("打印a1的值:" a1);
int b = 0b11111111_11111111_111111111_1010101;//二进制43取反加1,变成-43,下划线无意义
System.out.println("打印b的值:" b);
int i = 0b00000001_00110010_01100111_10101101;//随手写了个十进制的24274861
System.out.println("打印10进制的i:" i);
System.out.println("打印强制转换为short的i:" (short)i);
System.out.println("打印short的二进制表示:" Integer.toBinaryString((short)i));
结果:
int最大正数:2147483647
int最大正数二进制表示:1111111111111111111111111111111
int最小负数:-2147483648
int最小负数二进制表示:10000000000000000000000000000000
二进制定义打印int能表示的最大数:2147483647
二进制定义打印int能表示的最小数:-2147483648
43的二进制表现:101011
-43的二进制表现:11111111111111111111111111010101
打印a的值:43
打印a1的值:43
打印b的值:-43
打印10进制的i:20080557
打印强制转换为short的i:26541
打印short的二进制表示:110011110101101
int转为short时,直接截取地位16位进行转换