背景:
小数点在计算机中通常有两种表示方法:
1、一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数
2、计算机中使用浮点数表示小数类似于以前数学中用科学计数法表示较大的数
定点数的小数点是固定的,浮点则是不固定的.
因此定点数的表示范围是固定的,而浮点数的范围是可以浮动的.
定点数
定点数就是提前划分好整数位以及小数位所占用的位宽,让小数点的位置固定。定点数的示意图如下图 所示。文章采用 Qn 来 标记小数点位置,以 16 位宽的定点数为例。假如为有符号 Q12 格式的定点数,符号位占据最 高位的位置,剩余 15 位表示具体数值,其中整数有 3 位,小数有 12 位;若为无符号 Q12 格式 的定点数,则最高位也可以用来表示具体数值,即整数有 4 位,小数有 12 位。
浮点数
计算机中使用浮点数表示小数类似于以前数学中用科学计数法表示较大的数。
例如:352.47 = 3.5247 * 10的2次方
178.125转化为二进制为 10110010.001,又可表示为:1.0110010001 乘以 2的111次方(111是7的二进制表示)
10110010001 这部分被称作尾数(M)
111这部分被称作阶码(P)
正负被称作数符(S): 0表示正数 , 1表示负数。
那么一个浮点数可以使用三部分表示:数符(S),阶码(P),尾数(M)。
根据IEEE754标准,64位计算机的长实数浮点表示。
数位S(1位) | 阶码P(11) | 尾数M(52) |
---|
178.125在计算机中使用浮点数表示为:
0 | 00000000111 | 000…00010110010001 |
---|
浮点数与定点数的相互转换
浮点数和定点数之间的转换关系如下公式所示,其中 xQn为定点数,x 为浮点数: