- 进制介绍
对于整数, 有四种表达方式:
- 二进制BIN: 0,1 , 满2进1.以0b或0B开头
所谓2进制就是使用0和1来表示一个数, 满2进1如果在开发中看到有这种写法: int n1 = 0b1010; 这种写法没有错, 这是二进制的一种表示方式
- 十进制DEC: 0-9, 满10进1
十进制就是0-9来表示一个数, 满10进1
- 八进制OCT: 0-7, 满8进1. 以数字0开头表示.
比如 int n3 = 01010; 代表它是用八进制来表示一个数的
- 十六进制HEX: 0-9及A(10)-F(15), 满16进1. 以0x或0X开头表示. 此处的A-F不区分大小写.
十六进制它是用0-9以及A(10)-F(15)来表示一个数的, 以0x或0X开头表示 比如A表示10, B表示11, C表示12, D表示13, E表示14, F表示15, 到了15过后16就没有了因为它满16进1
- 举例说明
int n1 = 0b1010; //二进制的表示方式int n2 = 1010; //十进制int n3 = 01010; //八进制int n4 = 0x10101; //0X10101 十六进制System.out.println("n1 =" + n1);System.out.println("n2 =" + n2);System.out.println("n3 =" + n3);System.out.println("n4 =" + n4);
- 进制的图示
十进制 | 十六进制 | 八进制 | 二进制 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 2 | 2 | 10 |
3 | 3 | 3 | 11 |
4 | 4 | 4 | 100 |
5 | 5 | 5 | 101 |
6 | 6 | 6 | 110 |
7 | 7 | 7 | 111 |
8 | 8 | 10 | 1000 |
进制转换(基本功)
- 进制转换介绍
第一组
- 二进制转十进制
规则:
从最低位(右边)开始, 将每个位上的数提取出来, 乘以2的(位数-1)次方, 然后求和.
案例:请将 0b1011 转成十进制的数
0b1011 = 1 * 2的(1-1)次方 + 1 * 2 的(2 - 1)次方 + 0 * 2的(3-1)次方 + 1 * 2的(4-1)次方 = 1 + 2 + 0 + 8 = 11
- 八进制转十进制
规则:
从最低位(右边)开始, 将每个位上的数提出来, 乘以8的(位数-1)次方,然后求和.
案例: 请将 0234 转成 十进制的数
0234 = 4 * 8 ^ 0 + 3 * 8 ^ 1 + 2 * 8^2= 4 + 24 + 128 = 156
- 十六进制转十进制
规则:
从最低位(右边)开始, 将每个位上的数提取出来, 乘以16的(位数-1)次方, 然后求和
案例: 请将 0x23A 转成 十进制的数
0x23A = 10 * 16^0 + 3 * 16 ^ 1 + 2 * 16 ^ 2 =10 +48 + 64 + 512 = 570
第二组
- 十进制转二进制
规则:
将该数不断除以2, 直到商为0为止, 然后将每步得到的余数倒过来, 就是对应的二进制
案例: 请将 34 转成 二进制的数
34 = 34 ➗ 2 = 17 余数为 0 再将 17 ➗ 2 = 8 余数为1 再将 8 ➗2 = 4 余数为0 再将 2 除以 2 商1 余数为 0 然后反过来 为 = 0B100010 , 她一共有6位但是我们一个字节是我们存储的基本单位一个字节有8位所以在这里0B后还要再加两个0, 最终得到的二进制为0B00100010
- 十进制转八进制
规则:
将该数不断除以8, 直到商为0为止, 然后将每步得到的余数倒过来, 就是对应的八进制
案例: 请将 131 转成 八进制的数
131 ➗8 商为 16 余数为 3 , 再 ➗8 , 16 ➗ 8 商为 2 余数为0 最后得到的8进制的数为 0203
- 十进制转十六进制
规则:
将该数不断除以16, 直到商为0为止, 然后将每步得到的余数倒过来, 就是对应的十六进制
案例: 请将 237转成 十六进制的数
237➗16 商为 14 在16进制里 14对应的字母是E 余数为 13 , 在 16 进制里 13对应的字母是 D ,所以说结果是 0xED
第三组
- 二进制转八进制
规则:
从低位开始, 将二进制数每三位一组, 转成对应的八进制数即可.
案例: 请将 0b11010101 转成 八进制的数
每三个一组 101(5) => 为什么是5? 因为第一个1代表1 , 第二个1代表2, 第三个1代表四所以4加一等于五
010(2) => 0就是0 1为2 再一个0还是0所以为2
11(3)
结果为 0325
- 二进制转十六进制
规则:
从低位开始, 将二进制数每四位一组, 转成对应的十六进制数即可.
案例: 请将 0b11010101 转成 十六进制的数
每四个一组 0101(5) => 0x
1101(13) => 13为D 所以 1101(D)
11(3)
结果为 0325
第四组
- 八进制转二进制
规则:
将八进制数每1位, 转成对应的3位的一个二进制数即可.
案例: 请将 0237 转成 二进制的数
02(010)3(011)7(111) = 0b10011111
- 十六进制转二进制
规则:
将十六进制数每1位, 转成对应的4位的一个二进制数即可.
案例: 请将 0x23B 转成 二进制的数
0x2(0010)3(0011)B(1011) = 0b001000111011