`
lzzy_alex
  • 浏览: 30149 次
社区版块
存档分类
最新评论

浮点数

 
阅读更多

一:转换
如:十进制数12.34,多项式表示: 1*10^1 + 2*10^0 + 3*10^(-1) + 4*10^(-2)
化简为二进制表示:
整数部分:除2取余,直到商为0,倒序取余
表达式    商     余 
12/2       6       0
6/2         3       0
3/2         1       1
1/2         0       1 
结果为
 1100
小数部分: 乘2取整,直到小数部分为0或满足精度后(截取),顺序取值
表达式           积               整数部分  
0.34*2           0.68            0
0.68*2           1.36            1
0.36*2           0.72            0
0.72*2           1.44            1
0.44*2           0.88            0
0.88*2           1.76            1
0.76*2           1.52            1
0.52*2           1.04            1
0.04*2           0.08            0
0.08*2           0.16            0
0.16*2           0.32            0
0.32*2           0.64            0
0.64*2           1.28            1
0.28*2           0.56            0
0.56*2           1.12            1
0.12*2           0.24            0
0.24*2           0.48            0
0.48*2           0.96            0
0.96*2           1.92            1
0.92*2           1.84            1
0.84*2           1.68            1  -- 第21位
..... 
结果很可能是一个无穷尽数,假设这里只取20位,因第21位为1,故产生进位,结果为 0101 0111 0000 1010 0100
综上,整数部分 + 小数部分
得十进制12.34的二进制可近似地表示为 1100.0101 0111 0000 1010 0100

二:存储
现在已经将十进制数12.34转化成二进制,那么计算机是如何表示的呢?
这与科学计数法十分相似,如

十进制科学计数法可表示为 (-1)*S * M * 10^E
S为符号位,1表示负数,0表示正数
M为尾数,范围 1<=M<10,如(1.2, 9.234等)
E为指数(幂)
如 12.34 可表示为 (-1)*0 * 1.234 * 10^1

类似地,二进制科学计数法可表示为 
(-1)*S * M * 2^E,尾数 1<=M<2,如 
1)  1100.01010111 可表示为 (-1)*0   *   1.10001010111  *   2^3 (小数点左移3)
2)  -0.00110           可表示为 (-1)*1   *   1.10                    *   2^(-3) (小数点右移3位)

a. 可见指数E因左移右移,而或正或负,为避免指数为负数,在存储时会加上偏移量
单精度时为 127,双精度时为 1023
比如指数E为 (-3),则存储时E 127+(-3) = 124,在取值时再减去相应的偏移量还原数据
b. 因为尾数1<=M<2总是 1.xxx 的形式,为节省空间,是不保存整数部分的1的,如M=1.01,实际保存时M=01

图片 

三 举例
写出十进制数 12.34 的单精度存储形式 (保留20位,第21位是1,产生进位,而不是直接截断)
1) 转化二进制 
1100.01010111000010100100
2) 写成科学计数法形式 (-1)*S * M * 2^E,
= (-1)*0  * 
1.10001010111000010100100  * 2^3
符号位 S = 0,
尾数M = 
1.10001010111000010100100(表示时) = 10001010111000010100100(存储时),不保存相等的整数位1
指数E = 127 + 3 = 130 = 10000010 (为避免指数出现负值,加上单精度偏移量 127)
3) 实际存储格式为 0 10000010 10001010111000010100100
= 0100 0001 0100 0101 0111 0000 1010 0100 
= 0x 41 45 70 a4 

四 总结
综上,有以下结论
1) 浮点数是不精确的
2) 取值范围依赖于指数部分E,单精度类型为8位,范围为-127~128 (有符号的,可能左移,也可能右移),所以最大取值 2^128=3.4E38
3) 有效位数是指尾数M,单精度类型为23位,所以最大有效位是2^23= 8388608(共7位)
4) 相对于定点数,表示范围更大,但运算也更复杂

分享到:
评论

相关推荐

    浮点数(单精度浮点数,双精度浮点数)

    浮点数(单精度浮点数,双精度浮点数) 浮点数是一种数字表示方法,用于近似表示任意实数。在计算机中,浮点数由一个整数或定点数(即尾数)乘以某个基数(通常是 2)的整数次幂得到。这种表示方法类似于基数为 10 ...

    float_2_char.zip_C51 float转char_单片机 浮点数_浮点数 char_浮点数 转换_浮点数转换

    `float_2_char.zip` 提供的代码着重解决了单片机中浮点数(`float`)与字符型(`char`)之间的转换问题,这对于节省存储空间、提高通信效率以及降低错误率非常有用。下面将详细介绍浮点数与字符型之间的转换原理和...

    64位浮点数与32位整数或32位浮点数之间的相互转换(V17版本仅限1500系列PLC使用).zip

    此外,当涉及到32位整数和32位浮点数之间的转换时,整数转浮点数时可能会因为浮点数的精度而产生非预期的结果,而浮点数转整数时可能因四舍五入规则产生误差。因此,在编写程序时,应充分考虑这些潜在问题,并进行...

    十六进制转浮点数,十六进制转浮点数在线,LabView

    本文将深入探讨十六进制到浮点数的转换,特别是在LabVIEW环境下的实现。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(NI)开发的一种图形化编程语言,广泛应用于工程、...

    TMS320C3x浮点数简介、IEEE754的32位转VC33的32位浮点数算法、IEEE754的64位浮点数转VC33的40位浮点数算法

    在数字信号处理领域,浮点数运算在许多高级计算任务中扮演着重要角色。TMS320C3x是一款由德州仪器(TI)推出的数字信号处理器(DSP),它支持浮点运算,使得复杂的数学计算得以高效执行。本文将深入探讨TMS320C3x中...

    浮点数转换工具(十六进制转浮点数)

    浮点数转换在计算机科学中是一项基础且重要的概念,特别是在编程和数字处理领域。浮点数,顾名思义,是指可以表示小数部分的数值,与整数相对。它们在计算机内部通常以二进制浮点数的形式存储,遵循IEEE 754标准。这...

    C语言浮点数转字符串_C语言浮点数字符串_浮点数转换_

    在C语言中,将浮点数转换为字符串是一项常见的任务,尤其在需要将数值数据输出到文件或屏幕上时。这个过程通常涉及到`printf`函数家族的使用,它们能够按照指定的格式将各种类型的数据转化为可读的字符串。本文将...

    S7-200SMART_双精度浮点数转换为单精度浮点数库文件及使用说明.rar

    本文将详细介绍如何使用S7-200SMART进行双精度浮点数到单精度浮点数的转换,并提供相应的库文件及使用说明。 1. **浮点数类型**: 浮点数在计算机中分为单精度浮点数(32位,IEEE 754标准)和双精度浮点数(64位,...

    三菱PLC浮点数运算指令

    在三菱PLC编程中,浮点数运算指令是非常重要的功能,因为工业控制中的许多参数和变量都需要进行浮点数运算。在三菱PLC中,浮点数运算指令能够处理32位的浮点数,并进行比较、变换、四则运算、开方运算以及三角函数...

    javaScript实现浮点数转十六进制字符

    JavaScript实现浮点数转十六进制字符的过程涉及到了浮点数的表示、IEEE 754标准、二进制与十六进制的转换等多个知识点。由于JavaScript直接使用浮点数转十六进制的功能实现并不直接,因此需要借助其他方法来实现。...

    S7-200SMART 64位浮点数转32位浮点数(源文件+库文件+程序注释).rar

    在处理数值计算时,有时我们需要将不同精度的浮点数进行转换,如将64位浮点数转换为32位浮点数。这个过程涉及到浮点数的表示方式、数据类型的转换以及可能的精度损失问题。 64位浮点数,也称为双精度浮点数(Double...

    十六进制数转换为浮点数浮点数转换

    在计算机科学中,十六进制(Hexadecimal)和浮点数(Floating Point)是两种不同的数值表示方式。十六进制是一种逢16进1的数制,常用于编程和计算机内存中表示数据,因为它可以更紧凑地表示二进制数。而浮点数则是一...

    浮点数与16进制转换(含源代码)_单片机_浮点数_转换_十六进制_实数_

    浮点数与十六进制转换在计算机科学,尤其是单片机编程中,是常见的数据处理操作。浮点数是一种表示实数的方式,它包括一个符号位、指数部分和尾数部分,而十六进制(Hexadecimal)是数字系统中的一种表示方式,常...

    库卡机器人浮点数转换.docx

    在上述文档中,我们看到的是如何将浮点数在库卡机器人和PLC之间进行转换和通信的过程。浮点数是一种用于表示带有小数的数值类型,通常在计算和精度要求较高的应用中使用。以下是对这一过程的详细说明: 1. **变量...

    HEX与浮点数相互转换

    标题中的“HEX与浮点数相互转换”指的是在计算机科学中处理数字时的一个常见操作。HEX(十六进制)是计算机中广泛使用的数字表示方式,尤其在内存和CPU指令中,而浮点数则用于表示带有小数部分的数值,常用于科学...

    双精度浮点数转换

    在计算机科学中,浮点数是一种用于表示数值的近似方式,主要分为单精度浮点数和双精度浮点数。这些数据类型广泛应用于各种计算,特别是在需要处理大量精确度和范围的数学运算中,例如科学计算、图像处理和游戏开发。...

    IEEE754浮点数_数值转换_浮点数转换_

    IEEE754浮点数标准是计算机科学中用于表示和操作浮点数的国际标准,由电气和电子工程师协会(IEEE)制定。这个标准对于数字计算的精确性和可移植性至关重要,广泛应用于现代计算机系统、编程语言以及硬件处理器。在...

    浮点数与二进制转换工具

    浮点数与二进制转换在计算机科学中是至关重要的概念,特别是在通信开发、数据存储和计算领域。本文将深入探讨浮点数和二进制之间的转换,以及如何利用工具进行这种转换。 浮点数是一种表示实数的方式,它允许在有限...

    TIA博途-截取浮点数-自定义小数位数-全局FC库文件-V17版本-GF-截取浮点数-自定义小数点后位数.zip

    本篇将详细讲解如何在TIA博途V17版本中,利用全局功能块(FC,Function Block)库文件实现对浮点数的截取,并自定义小数点后的位数。 首先,浮点数在PLC编程中常用于处理需要较高精度的数值运算。在TIA博途V17中,...

    浮点数二进制互转小工具

    浮点数在计算机科学中扮演着至关重要的角色,特别是在数值计算、图形处理和科学计算等领域。浮点数的表示方式是基于二进制的,但为了方便人类阅读和理解,通常我们使用十进制形式。浮点数与二进制之间的转换是理解和...

Global site tag (gtag.js) - Google Analytics