浮点数表示方法

浮点数表示方法,第1张

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

浮点数通常被表示为:

N=M×R^E

比如:12.345=1.2345×10^1

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

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

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

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

浮点数的规格化表示

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

0.3×10^0;0.03×10^1;0.003×10^2;0.0003×10^3。

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

在计算机内,对非0值的浮点数,要求尾数的绝对值必须大于基数的倒数,即|M|≥1/R。

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

浮点数的二进制表示:

例如:-12.5 转为单精度二进制表示

12.5:

整数部分12,二进制为1100小数部分0.5, 二进制是.1,先把他们连起来,从第一个1数起取24位(后面补0): 

1100 .1 000 00000000 00000000 

这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是尾数) 

把小数点移到第一个1的后面,需要左移3位(1.1001 000 00000000 0000 0000 *2^3 ), 加上偏移量127:127+3=130,二进制是10000010 ,这是阶码。 

-12.5是负数,所以符号位是1。把符号位,阶码和尾数连起来。注意,尾数的第一位总是1,所以规定不存这一位的1,只取后23位: 

1 10000010 10010000000000000000000

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

二进制数(binaries)是逢2进位的进位制,0、1是基本算符;计算机运算基础采用二进制。电脑的基础是二进制。电子计算机出现以后,使用电子管来表示十种状态过于复杂,所以所有的电子计算机中只有两种基本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为基础的电子计算机采用二进制来表示数字和数据。

浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

浮点由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。

浮点数a由两个数m和e来表示:a = m × b^e(b的e次方)。

在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。

有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。

我们可以用这3种方法来表示浮点数:

1、BCD 代码。

2、 阶码尾数表示法。

3、 我们可以把第二种方法改造一下,就能得到一种更好的方法。先把一个浮点数的小数点移到最后,用N=M×RC 表示,R=10,然后再把M 转换为二进制B,再用C 做阶码,B 做尾数用阶码尾数法表示。

例如: 3.14159=314159×10^(-5)。

314159 用二进制表示为1001100101100101111。

用这种方法不仅可以精确表示浮点数的值,还可以充分的利用存储空间。

扩展资料:

浮点运算单元(FPU)

浮点数运算和整数运算不同,所以运算单元当然不同。早期的浮点处理器是作为 CPU 的「外置协处理器」出现的。x87 FPU 特指与 x86 处理器配套的浮点协处理器架构。

有以下要点:

1、浮点寄存器采用栈结构。

深度为 8,宽度为 80 位,即 8 个 80 位的寄存器。

名称为 ST(0) ~ ST(7),栈顶为 ST(0),编号分别为 0 ~ 7。

2、所有浮点运算都按 80 位拓展精度进行。

3、浮点数在浮点寄存器和内存之间传送。

(1)float、double、long double 型的变量在内存中分别用 IEEE 754 单精度、双精度、扩展精度表示,分别占 32 位,64 位,96 位(前 16 位无效)。

(2)float、double、long double 类型变量在浮点寄存器中都用 80 位拓展精度表示。

(3)从浮点寄存器到内存:80 位拓展精度格式转换为 32 位或者 64 位。

(4)从内存到浮点寄存器:32 位或者 64 位转换为 80 位扩展精度格式。

参考资料来源:百度百科-浮点

百度百科-浮点表示法


欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/pretty/2871908.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-02-02
下一篇 2023-02-02

发表评论

登录后才能评论

评论列表(0条)

保存