浮点数数据表示

内容纲要

之前个人理解错误,浮点数转换少了一步。
因为当时看视频和别人博客的时候,发现很多人没有说清楚一些很细致的东西。
首先,浮点数的表示,有

  • 定点数据表示
  • 浮点数据表示
  • IEEE754

定点数据表示

《浮点数数据表示》

原理是将一个浮点数的整数和小数部分各自转为二进制,最高位表示符号位。
例如使用定点数据表示,表示 -86.25

86 转为二进制:0_1010110
0.25 转为二进制为 0.01
86.25 二进制为 0_1010110.01
-86.25 = 1_1010110.01
反码 1_0101001.11
补码 1_010_1001.11

所以 -86.25 的定点数据表示为 1_010_1001.11
要注意的是,有些在线转换二进制的网站,会将 -86.25 转为 -1010101.11,原因在于网站的工具没有对负数就行补一位最高位,也就是说,网站不会对负数转为补码形式。
可以将转换后的二进制数据,反过来生成10进制的数据,就可以测出转换工具的 bug了。

浮点数据表示

浮点数据表示就是
《浮点数数据表示》

过程看 https://www.cnblogs.com/whuanle/p/12263903.html

IEEE754

IEEE754 跟 浮点数据表示,有差异,IEEE754 表示方法

S E M 精度
S 8位偏指数E 23位有效尾数M 单精度
S 11位偏指数E 52位有效尾数M 双精

根据 IEEE 754 格式,例如单精度浮点数的表示为:

N = (-1)S 2E-127 1.M

浮点数据表示

N = (-1)S 2e 1.M

之前看过的很多博客和视频,没有对此进行区分,大多数将 浮点数据表示 当作 IEEE754 了。
另外,浮点数要补足位数时,是从小数部分后面补足的。
例如 8 位表示 0.101B,为 0.101_00000B。

这里

e = E - 127

127 的二进制为 0111 1111

E = e + 0111_1111
e = E - 0111_1111

《浮点数数据表示》
例题如下

《浮点数数据表示》

点赞
  1. tadalafil说道:

    I am just writing to make you understand what a perfect experience my wife's princess obtained using your webblog. She noticed some things, which included what it is like to possess an excellent teaching spirit to make others with no trouble learn about specific specialized things. You undoubtedly surpassed readers' expected results. Thanks for providing those productive, trusted, informative as well as unique tips on your topic to Mary.

  2. AffiliateLabz说道:

    Great content! Super high-quality! Keep it up! :)

发表评论

邮箱地址不会被公开。 必填项已用*标注

You must enable javascript to see captcha here!