close
当前位置: 物联网在线 > 技术文库 >

IEEE Floating Point Standard (IEEE754浮点数表示法标准)

 IEEE Floating Point Standard (IEEE754浮点数表示法标准)

浮点数与定点数表示法是我们在计算机中常用的表示方法 所以必须要弄懂原理,特别是在FPGA里面,由于FPGA不能像在MCU一样直接用乘除法。

定点数
首先说一下简单的定点数,定点数是克服整数表示法不能表示实数的缺陷,那么我们就可以通过将实数乘上一个分数来实现,当然要是分数就是2^-i倍数,那么我们的定点数表示法就是精确的表示,但是很不幸我们自然界中的树并不是那么凑巧。所以定点数只能是近视表示实数,包括浮点法也是这样的。具体的实现就是将表示成2进制后,然后在左移k位,那么对于N为的定点数表示法中,就有N-1-K表示整数部分,低k位表示分数,最高位表示符号。

定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。

浮点数
浮点数表示法更为复杂,这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa ),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。比如 123.45 用十进制科学计数法可以表达为 1.2345 × 102 ,其中 1.2345 为尾数,10 为基数,2 为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。

提示: 尾数有时也称为有效数字(Significand)。尾数实际上是有效数字的非正式说法。

在 IEEE 标准中,浮点数是将特定长度的连续字节的所有二进制位分割为特定宽度的符号域,指数域和尾数域三个域,其中保存的值分别用于表示给定二进制浮点数中的符号,指数和尾数。这样,通过尾数和可以调节的指数(所以称为"浮点")就可以表达给定的数值了。具体的格式参见下面的图例:

 IEEE Floating Point Standard (IEEE754浮点数表示法标准)


 IEEE Floating Point Standard (IEEE754浮点数表示法标准)

上图中可以看出S表示符号位,EXponent表示指数位,也就是“浮动”的指数位,指数的范围在32位的系统中(0-2^8 -1)/2 也就是0-127,在double型位2^11位浮动指数。

指数域中,对应于我们之前介绍的二进制科学计数法中的指数部分。其中单精度数为 8 位,双精度数为 11 位。以单精度数为例,8 位的指数为可以表达 0 到 255 之间的 255 个指数值。但是,指数可以为正数,也可以为负数。为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精度数的偏差值为 127,而双精度数的偏差值为 1023。比如,单精度的实际指数值 0 在指数域中将保存为 127;而保存在指数域中的 64 则表示实际的指数值 -63。 偏差的引入使得对于单精度数,实际可以表达的指数值的范围就变成 -127 到 128 之间(包含两端)。我们不久还将看到,实际的指数值 -127(保存为 全 0)以及 +128(保存为全 1)保留用作特殊值的处理。这样,实际可以表达的有效指数范围就在 -127 和 127 之间。在本文中,最小指数和最大指数分别用 emin 和 emax 来表达。

图例中的第三个域为尾数域,其中单精度数为 23 位长,双精度数为 52 位长。除了我们将要讲到的某些特殊值外,IEEE 标准要求浮点数必须是规范的。这意味着尾数的小数点左侧必须为 1,因此我们在保存尾数的时候,可以省略小数点前面这个 1,从而腾出一个二进制位来保存更多的尾数。这样我们实际上用 23 位长的尾数域表达了 24 位的尾数。比如对于单精度数而言,二进制的 1001.101(对应于十进制的 9.625)可以表达为 1.001101 × 23,所以实际保存在尾数域中的值为 00110100000000000000000,即去掉小数点左侧的 1,并用 0 在右侧补齐。

注:单精度浮点型所谓的7.2位精度就是指的是有效位的范围,因为单精度浮点可以表达的最大指数为 2^24 - 1 = 16,777,215这个数就是有效位的最大表示数字了,超过这个数的就要进行取舍。

参考:

IEEE 754 Floating-Point Format
IEEE 754 FLOATING POINT REPRESENTATION


(责任编辑:ioter)

用户喜欢...

基于光纤通道的IEEE1394光信号传输系统设计

摘要:应IEEEl394同光纤通道总线的互联需求。设计了一种基于光纤通道的IEEEl394光信号传输系统。试系统以 基于现场可编程逻辑阵列(FPGA)设计的协议映射模块为核心。实现了将IEEEl394信号通过...


专家秘笈连载八:Xilinx Vivado HLS中Floating

George Wang (王宏强) – Xilinx DSP Specialist 尽管通常Fixed-Point(定点)比Floating-Point(浮点)算法的FPGA实现要更快,且面积更高效,但往往有时也需要Floating-Point来实现。这是因为Fixed-Point有限的数...


基于 IEEE802.16e 的OFDM定时同步算法及FPGA实现

作者:陈兵,尹曼,刘力军 (1.中国电子科技集团公司第五十四研究所河北石家庄;2.河北经贸大学信息技术学院河北石家庄) 摘 要: 针对 IEEE802.16e 的正交频分复用( Orthogonal Frequenc...


IEEE754浮点数格式

作者:两忘而化其道(fei199311) 在计算机中,需要对小数进行计算,因此需要相应的电路支持。支持小数计算的电路有两种:定点部件和浮点部件。定点部件与整数部件没有本质区别,只是...


HID案例分析_SIGMAPOINT选择RF IDeas/iCLASS®方案提高效率和自动跟踪工作成本

SigmaPoint 希望提高效率和自动跟踪工作成本,以便更有效地在低至工作级别为将来的项目分配资源,更重要的是,能够确定更准确的项目报价。...


Digi XBee® / XBee-PRO® 无线射频模块

The XBee and XBee-PRO RF Modules were engineered to meet IEEE 802.15.4 standards and support the unique needs of low-cost, low-power wireless sensor networks. ...


60GHz频段诸多量测及设计挑战

在高速传输影音的强烈需求带动下,60GHz可望成为下一代无线网络频段首选。从IEEE制定PAN标准802.15.3C到LAN适用的802.11ad,皆采用60GHz技术作为标准;然而,目前60GHz频段仍有诸多量测及设计挑战尚待克服。...


基于IEEE 802.15.4实现IPv6通信的6LoWPAN测试

IEEE 802.15.4标准于2004年出台,设计用于精密、低功耗、低成本嵌入式设备,如传感器,故又称传感器协议,支持设备供电一到五年。IEEE 802.15.4无线收发器工作频段为2.4GHz,与Wi-Fi网差不多,但功耗只是前者的约1%。...


基于光纤通道的IEEE1394光信号传输系统

本文提出了一种IEEE1394到光纤通道传输协议的映射方案,在此工作基础上,利用现场可编程逻辑阵列(FPGA),对所提出的协议映射方案进行了硬件设计与实现,设计了一个基于FC的IEEE1394光信号传输系统。...


Zigbee在单兵作战生命子系统中的应用

Zigbee是IEEE 802.15.4协议的代名词。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。...