二进制
在十进制中, 从1开始数,到10后, 就要进一位,变10表示.
同理, 二进制, 从1开始数, 到2后, 就要进一位, 变成10表示, 因此在二进制中最大的数就是1
二进制与十进制关系对比
十进制 | 二进制 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
在计算机中数据都是以二进制形式存储
八进制
八进制,顾名思义, 逢八进一, 所以在八进制中我们看到最大的数是7
八进制与十进制关系对比
十进制 | 八进制 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 10 |
9 | 11 |
十六进制
十六进制顾名思义, 就是逢16进1, 与前面的不一样, 超过9以后, 以A、B、C、D、E、F分别代表10、11、12、13、14、15
八进制与十进制关系对比
十进制 | 十六进制 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
A、B、C、D、E、F - 在16进制中大小写含义一样
进制转换
10进制<->2进制
# 10进制转2进制
bin(10)
# 0b1010
# python程序中2进制自动以10进制显示
0b11 + 0b1010
8进制、16进制
# 八进制,以0o开始
0o17
0o23
# 16进制,以0x开始
0x1F
0x2A
# 不同进制可以直接进行数学运算,结果为十进制
0o17 + 0b11
0o11 ** 0x3
浮点数精度问题
任何编程语言都存在浮点数精度问题,这是由计算机采用二进制原理决定,不是某个语言的缺陷
0.1 + 0.1 + 0.1
0.7 + 0.1
0.7 + 0.2
0.7 + 0.1 + 0.1 + 0.1
二进制的浮点精度问题根源是二进制的0.1是十进制的0.5, 没有办法精确表示十进制的0.1、0.2、0.3、0.4
讨论区