写这篇blog,是因为在上工程硕士数学时候,又开始讲到了浮点数的储存,运算和精度的问题。这个问题已经见了好多次了,从微机原理的课到计算机视觉处理矩阵时候的conditioning,到这次。但感觉一直都没有理清楚。所以这次尝试梳理一下。
数在计算机中的存储
一般主要分为两种形式,这里以8位的存储进行解释:
- 定点数
定点数,很直观地理解就是小数点是固定的,如 b 0 b 1 . b 2 b 3 b 4 b 5 b 6 b 7 b_0b_1.b_2b_3b_4b_5b_6b_7 b0b1.b2b3b4b5b6b7,就是固定整数部分是两位,小数部分是六位的情况。在这种情况下,表示范围和精度都固定下来了。
表 示 范 围 : x = 0 ∼ 2 2 − 2 − 6 精 度 : Δ x m i n = 2 − 6 十 进 制 转 换 : x 10 = ∑ i b i ∗ 2 i , b i = 0 o r 1 表示范围:x = 0 \sim 2^2-2^{-6}\\ 精度:\Delta x_{min} = 2^{-6}\\ 十进制转换: x_{10} = \sum_i{b_i*2^i}, b_i = 0 or 1 表示范围:x=0∼22−2−6精度:Δxmin=2−6十进制转换:x