快速业务通道

Vdsp(bf561)中的浮点运算(5):float类型表示总结

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
可以知道,要取最大值,可以将指数和尾数都设置为最大值,由于标准规定将指数全为1留做特殊表示,故指数最大值为255,这个数即

0      11111110   11111111111111111111111

符号位    指数     尾数

从16进制整数看它的值就是 0x7f 7f ff ff。

根据浮点数的计算公式可知这个值为:

1. 9999997615814208984375 * 2(254-127)

= 3.4028234663852886E+38

这个是计算器的计算结果。

1.4 FLT_EPSILON

FLT_EPSILON是在float.h中定义的一个常量,用以表示一个单精度浮点数的最小分辨率,文档对此值的描述是:

A constant that represents the smallest value that may added to 1.0 and still result in a change of value (for example, FLT_EPSILON)

也就是加1后要能看得出变化!

FLT_EPSILON定义为:

#define FLT_EPSILON  1.1920928955078125E-07F

那么这个值从何而来?

先看1.0的浮点表示:

0      01111111   00000000000000000000000

符号位    指数     尾数

从十六进制的角度看就是0x3f80 0000

要想把这个值加上一个足够小的值但仍然能看出变化,当然就是把尾数直接加1,这个数即2-23,转换成十进制就是FLT_EPSILON的值。

下面是一个很有意思的问题:

float a = FLT_EPSILON;

这个时候a的值会是什么?

在VDSP下试了一下,a的值看成整数是:0x3400 0000,也就是:

0      01101000   00000000000000000000000

符号位    指数     尾数

即1.0 x 2(104-127) = 1.0 x 2-23

1.5 INF和NAN

IEEE754规定了单精度浮点数的类型:

Type Exponent Fraction Value
NAN 255 Nonzero Undefined
Infinity 255 0 (–1)s Infinity
Normal 1 <= e <= 254 Any (–1)s (1.f22-0) 2 e–127
Zero 0 0 (–1)s Zero

INF的表示要求指数为255,尾数为0,即:

0        11111111   00000000000000000000000

符号位    指数     尾数

也就是0x7f80 0000。

在VDSP下可以用:

float a = 1.0 / 0.0;

来生成一个INF的数。

当然,符号位也可以取负数,即:

1      11111111   00000000000000000000000

符号位    指数     尾数

也就是0xff80 0000。

在VDSP下可以用:

float a = -1.0 / 0.0;

来生成一个-INF的数。

上述两个INF都可以用isinf函数来检测它。

NAN的表示要求指数为255,尾数不为0,即:

0      11111111   00000000000000000000001

符号位    指数     尾数(可取任意不为0的值)

也就是0x7f80 0001这样的数。

在VDSP下可以用:

float a = 0.0 / 0.0;

来生成一个NAN的数,不过这个时候它的值为0xffff ffff。

可以使用isnan函数来检测它。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号