什么是浮点运算 浮点运算的数据

2017-03-08

浮点运算就是实数运算,因为计算机只能存储整数,那么你对浮点运算了解多少呢?以下是由小编整理关于什么是浮点运算的内容,希望大家喜欢!

浮点运算的简介

当我们用不同的电脑计算圆周率时,会发现一台电脑的计算较另一台来讲结果更加精确。或者我们在进行枪战游戏的时候,当一粒子弹击中墙壁时,墙上剥落下一块墙皮,同样的场面在一台电脑上的表现可能会非常的呆板、做作;而在另外一台电脑上就会非常生动形象,甚至与我们在现实中看到的所差无几。这都是浮点运算能力的差异导致的。

如果是实数的话,就不是这样了,机器有两种办法表示实数,一种是定点,就是小数点位置是固定的,一种是浮点,就是小数点位置不固定,计算方法也比较麻烦,通常会比整数运算代价大很多

FPU->Floating Point Unit,浮点运算部件

BCD->Binary Coded Decimal 压缩的二进制数,是用4个位来表示数字0~9,一个byte表示两个十进制数,比如1001111表示79

科学计数法:a×10的n次幂的形式。将一个数字表示成 (a×10的n次幂的形式),其中1≤|a|<10,n表示整数,这种记数方法叫科学记数法

浮点运算的数据

浮点运算使用三种不同的数据:

1)整数(Integer),又分为字,短整数(Short Integer)和长整数(longint)

2)实数(Real)分单精度(Single Real)和双精度(Double Real)

3)压缩的二十进制数(BCD)

下面是其位数(bits)和能表示的大致范围和

Type Length Range

-----------------------------------------------

Word Integer 16 bit -32768 to 32768

Short Integer 32 bit -2.14e9 to 2.14e9

Long Integer 64 bit -9.22e18 to 9.22e18

Single Real 32 bit 1.18e-38 to 3.40e38

Double Real 64 bit 2.23e-308 to 1.79e308

extended Real 80 bit 3.37e-4932 to 1.18e4932

Packed BCD 80 bit -1e18 to 1e18

双精度数和扩展精度数表示范围对一般应用来说已经足够大了!

1)整数,以补码形式存储,正数的补码是其本身,负数补码是其绝对值的各位变反后加1,下面是实际存储的例子:

0024 var1 dw 24

FFFE var2 dw -2

000004D2 var3 dd 1234

FFFFFF85 var4 dd -123

0000000000002694var5 dq 9876

2)BCD数

在FPU中用80位表示正好是浮点堆寄存器的宽度,在其格式如下存储:

Bit

79___72_71________________________________________0

符号 ---18个二十进制数——————————---

看下面的例子:

00000000000000012345 var1 dt 12345

80000000000000000100 var2 dt -100

3)浮点数,这个复杂点,有三种格式

单精度:_31_30________23_22___________0

符号 指数 有效数

双精度:_63_62__________52_51__________________0

符号 指数 有效数

扩展精度数:

_79_78____________64_63___________________0

符号 指数 有效数

浮点运算的格式

单精度:_31_30________23_22___________0

符号 指数 有效数

双精度:_63_62__________52_51__________________0

符号 指数 有效数

扩展精度数: _79_78____________64_63___________________0

符号 指数 有效数

例子:

C377999A var1 dd -247.6

40000000 var2 dd 2.0

486F4200 var3 real4 2.45e+5

4059100000000000 var4 dq 100.25

3F543BF727136A40 var5 real8 0.00123

C377999A var1 dd -247.6

40000000 var2 dd 2.0

486F4200 var3 real4 2.45e+5

4059100000000000 var4 dq 100.25

3F543BF727136A40 var5 real8 0.001235

400487F34D6A161E4F76 var6 real10 33.9876

DD和real4都可以在asm中来定义单精度浮点数,4 bytes

DQ和real8都可以在asm中来定义双精度浮点数,8 bytes

DT和real10都可以在asm中来定义扩展精度浮点数,10 bytes

更多相关阅读

最新发布的文章