1.进制是什么
我们平常遇到的数字0、1、2、3...9,9再加1满10进1,得到10,这些数就表示十进制数。(decimal)
同样的满2进1就表示二进制(binary)。
满8进1就表示八进制(octal)。
满16进1就表示十六进制(hex)。
进制 | 表示 | 说明 |
---|---|---|
二进制 | 0,1 | 满2进1,以0b或0B开头 |
八进制 | 0,1,2,3,4,5,6,7 | 满8进1,以数字0开头 |
十进制 | 0,1,2,3,4,5,6,7,8,9 | 满10进1 |
十六进制 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F | 满16进1,以0x或0X开头,A-F不区分大小写 |
感受进制各进制间数的变化
十进制 | 十六进制 | 八进制 | 二进制 |
---|---|---|---|
0 | 0 | 0 | 0000 |
1 | 1 | 1 | 0001 |
2 | 2 | 2 | 0010 |
3 | 3 | 3 | 0011 |
4 | 4 | 4 | 0100 |
5 | 5 | 5 | 0101 |
6 | 6 | 6 | 0110 |
7 | 7 | 7 | 0111 |
8 | 8 | 10 | 1000 |
9 | 9 | 11 | 1001 |
10 | A | 12 | 1010 |
11 | B | 13 | 1011 |
12 | C | 14 | 1100 |
13 | D | 15 | 1101 |
14 | E | 16 | 1110 |
15 | F | 17 | 1111 |
16 | 10 | 20 | 10000 |
17 | 11 | 21 | 10001 |
2.二进制
所有的数字在计算机底层都以二进制形式存在
比方说int num = 4;
,int类型占用4个字节,即4*8bit
= 32位
二进制表示为
3.进制之间的转换
(1)十进制 -> 二进制
除二取余的逆
14÷2 = 7,余数0
7÷2 = 3,余数1
(2)二进制 -> 十进制
乘以2的幂数并相加
1110(二进制) = 0×20+1×21+1×22+1×23 = 0+2+4+8 = 14(十进制)
(3)二进制 -> 八进制
因为 23 = 8,二进制3位能表示的数最大(111)也就是7了,八进制的1位相当于二进制3位的数据量。
将二进制数从后往前 11101001 分割为3位,不足补零 011 101 001,再把每3位换成10进制。
(4)二进制 -> 十六进制
因为 24 = 16,二进制4位能表示的最大(1111)也就是15(十六进制中的F),十六进制的1位相当于二进制4位的数据量。
将二进制数从后往前 11101001 分割为4位,不足补零 1110 1001,再把每4位换成10进制。
(5)八进制 -> 二进制
每1位八进制可用3位二进制表示
(6)十六进制 -> 二进制
每1位十六进制可用4位二进制表示