龙空技术网

计算机如何表示小数?

程序员孙国兵 350

前言:

如今兄弟们对“c语言定义小数”大致比较着重,各位老铁们都需要分析一些“c语言定义小数”的相关内容。那么小编同时在网上搜集了一些对于“c语言定义小数””的相关文章,希望同学们能喜欢,我们快快来了解一下吧!

浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡。

浮点数通常被表示为:

其中,M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的 基数 ,E(Exponent)被称为阶的 阶码 。计算机中一般规定R为2是一个确定的常数,不需要在浮点数中明确表示出来。

因此,在已知标准下,要表示浮点数,

一是要给出尾数M的值,通常用定点小数形式表示,它决定了浮点数的表示精度,即可以给出的有效数字的位数。

二是要给出阶码,通常用定点整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。因此,在计算机中,浮点数通常被表示成如下格式:(假定为32位浮点数,基为2,其中最高位为符号位)

程序员孙国兵

浮点数的规格化表示

按照上面的指数表示方法,一个浮点数会有不同的表示:

为了提高数据的表示精度同时保证数据表示的唯一性,需要对浮点数做规格化处理。

在计算机内,对非0值的浮点数,要求尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示:把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。

注意,尾数的最高位始终是1,因此我们完全可以省略掉该位。

IEEE754 标准约束了浮点数的大部分使用设置:(尾数用原码;阶码用“移码”;基为2)

(1) 尾数用原码,且隐藏尾数最高位。

原码非0值浮点数的尾数数值最高位必定为 1,因此可以忽略掉该位,这样用同样多的位数就能多存一位二进制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。当然,在取回这样的浮点数到运算器执行运算时,必须先恢复该隐藏位。

(2) 阶码使用“移码”,基固定为2

如下图的32bit浮点数和64bit浮点数,从最高位依次是符号位、阶码和尾数

程序员孙国兵

最终的32位单精度浮点数为:1 1000 0000 1110 0000 0000 0000 0000 000

更多内容欢迎查看我的专栏《90天精通C语言编程》

标签: #c语言定义小数 #定点运算器包括哪些类型