历史上的今天
今天是:2024年09月09日(星期一)
2021年09月09日 | IEEE-754浮点格式应用分析
2021-09-09 来源:eefocus
IEEE-754是由电子与电气工业协会制定的一整套浮点数表示的标准。本文主要分析最常用的binary32(单精度),binary64(双精度可以此类推)。
Binary32占用存储器4bytes,可以表示最大数值(2−2−23)×2127≈3.402823×1038,相比之下,int32(有符号32位整型数)可以表示到2-31-1=2,147,483,647。在同样的存储宽度下,binary32表示的范围是int32的158,456,293,939,825,284,266,763,033,469.56倍。
Binary32存储结构如下:

Hex:0x419C0000
二进制表示为

十进制表示为

value=(-1)0×2(131-127)×(1+2(-3)+2(-4)+2(-5)=(19.5)10
因此,对于每一个浮点数来说,主要有两个部分构成:指数部分和尾数部分。
指数部分有两个特例:即0x00和0xFF
当为0x00时适用如下:(-1)signbit×2-126×0.significandbits即表示±0.0。此时,尾数部分没有实际的意义。
当为0xFF时表示±infinity。
尾数部分0~11111111111111111111111b
各位的权值如下:
bit23=1为了节省存储空间此位为隐藏位;
bit22=0.5
bit21=0.25
bit20=0.125
bit19=0.0625
bit18=0.03125
.
.
bit0=0.00000011920928955078125
一个整型数,如果用IEEE-754表示可能会有误差。
[-224,224]=[-16777216,16777216],没有误差。
[-225,-224]=[-33554432,-16777217]或[16777217,33554432],向2倍数舍入。
[-226,-225-1]或[225+1,226],向4的倍数舍入。
…
[-2127,-2126-1]或[2126+1,2127],向2103的倍数舍入。
[-2128,-2127-1]或[2127+1,2128],向2127-23的倍数舍入。
value≤-2128或value≥2128,向∞舍入。
要注意数据转化时带来的系统误差,如要克服,就需要综合考虑。
计为超声波液位计在测量过程中,由于液位的测量要计算声波来回的时间差,而时间差的测量要用到当前环境下的声速。而环境的不同导致声速的不同,在用不同尾数表示声速时,会带给系统一定的误差。为了减小这种系统误差,声速的计算采用的是64bit双精度,保证在计算距离的时候,使公式本身带来的系统误差最小,也整体提高了测量的精度。

同样的例子,输出的4~20mA电流的数值,也需精准表示。在使用当前的距离计算液位,再根据液位计算电流值的情况下,如果使用尾数少的小数表示,可能一次的计算误差几乎可以忽略不计,但经过多次级联的运算后,带来的误差便不可忽视。一些特殊的情况下,可能还会直接影响到测量的精度,为了保证高精度液位的测量,选用双精度是明智的选择。
上一篇:超声波液位计液位测量软件的框架
史海拾趣
|
暗。。终于把自己都给搞乱了。。一大堆资料 。。一大堆A/D。。到现在都不知道该如何下手了。。。 求哪位大哥大姐。。做个这个题目的给个参考啊。。:Q :\'(… 查看全部问答> |
|
IAR FOR 430中精确软件延时方法 在用单片机的时候常常会用到延时函数,430也不例外,常见的形式有: void delay(unsigned int ms) { &nbs ...… 查看全部问答> |
|
从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级 ...… 查看全部问答> |
|
大家编程都用什么仿真器?又一个 Jlink 固件升级后变成 unknow device 在淘宝上买了两个 J-Link V8,现在两个都已经因为固件升级变成了 unknown device. J-Link 功能强大,确实是非常不错的仿真器。 大家有没有比 J-Link 觉得更好用的仿真器呢? … 查看全部问答> |
|
本帖最后由 吴鉴鹰. 于 2015-5-24 21:11 编辑 数字旋转编码器在现在的工控领域运用广泛,跑步机的旋钮,控制器的旋钮,音响的音量控制旋钮,都是数字旋转编码器的典型应用。 看一个数字旋转编码器的视频,加深一下理解 ...… 查看全部问答> |




