请稍候,加载中....

进制转换与浮点精度

二进制

在十进制中, 从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

 


Python学习手册-