进制转换实际上是基于继承或实现来完成的,因为String是被final修饰的不能被继承或实现,所以在进制转换时将int强制转换成String,会出现属性抛异常。可以用toString()方法,或者valueof()方法。toString()方法当值为空的时候会抛出空指针异常,而valueof()方法在内部进行了限制,当为null时则返回null。需要注意的是String.valueOf(object)的值是字符串”null”,而不是null!!!
一.常用进制类型
- 二进制
- 计算机底层都是使用二进制进行存储以及运算
- 0b****;(以0b或者0B开始,表示0或1)比如:010101
- 原码、反码、补码
- 原码
将一个整数转换成二进制表示
以 int 类型为例,int类型占4个字节、共32位。
例如:
2 的原码为:00000000 00000000 00000000 00000010
-2的原码为:10000000 00000000 00000000 00000010 - 反码
正数的反码:与原码相同
负数的反码:原码的符号位不变,其他位取反
例如,-2 的反码为:11111111 11111111 11111111 11111101 - 补码
正数的补码:与原码相同
负数的补码:反码+1
例如,-2 的补码为:01111111 11111111 11111111 11111110 - 注意事项
- 二进制的最高位是符号位(“0”代表正数,“1”代表负数);
- Java中没有无符号数;
- 计算机以整数的补码进行运算;
- 原码
- 八进制
0****;(以数字0开始,表示0到7任意数字 比如:077777) - 十进制
0~9组成 比如:100
十六进制
0x****;(以0x或者0X开始,表示0到f任意数字 比如:0x13f)
二.进制转换
1. 整数十进制转换为二进制
下图演示了将十进制数字 42 转换成二进制的过程:
从图中得知,十进制数字 42 转换成二进制的结果为 101010。
2. 小数十进制转换为二进制
下图演示了将十进制小数 0.6875 转换成二进制小数的过程:
从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011。
三. 前16的二进制
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |