鱼C论坛

 找回密码
 立即注册
查看: 136627|回复: 7255

[扩展阅读] 定点数:用二进制表示小数(#)

  [复制链接]
发表于 2015-12-18 15:16:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
定点数:用二进制表示小数(#)


带井号(#)的内容为选修知识,因为理解难度较大,可能会在一定程度上打击初学鱼油的信心,请量力而学!

既然谈到了取值范围,那么很多同学可能会很好奇:小数在内存中是如何存储的呢?

计算机是执行 IEEE 754 浮点标准来存储小数的,这可不比整数补码那么好理解了。因此,会有许多初学者认为浮点数生涩难懂,没意思¥%……&&

所以这里小甲鱼尝试给大家以比较通俗的方式讲解~



刚开始的时候,不同的商家均设计了一套自己的存储方案,和运算细节的规定,可想而知导致的结果就是不同产品放在一起根本没法兼容……

这一现象直到 IEEE 754 标准(IEEE:电气和电子工程师协会)的制定才得以改变。值得一提的是,目前所有的计算机都支持这个 IEEE 754 浮点标准。


要理解浮点数的第一步,就是先理解定点数存储。

我们先看看大家更熟悉的十进制表示法:

搜狗截图20151218152738.png

其中每个十进制位 d 的取值范围是 0 ~ 9。

进制转换 中我们提到了位权的概念,这里是同样的。对于十进制数来说,小数点(.)左边的数是 10 的正数次幂,而小数点右边的数则是 10 的负数次幂。

举个栗子:

搜狗截图20151218160203.png

小数用二进制表示法也是同样的道理,对不对?

搜狗截图20151218154348.png

其中每个二进制位 b 的取值范围是 0 和 1。

对于二进制数来说,小数点(.)左边的数是 2 的正数次幂,而小数点右边的数则是 2 的负数次幂。

举个栗子:

搜狗截图20151218155524.png

再来个高清原理图:

搜狗截图20151218162103.png

从上图我们可以推测出:二进制小数点向左移动一位,相当于这个数的值除以 2;向右移动一位,相当于乘以 2。

举个栗子:

搜狗截图20151218162846.png

将 10.11 的小数点向左移动一位,数的值相当于除以 2:

024139apucegblolpzizze.png

将 10.11 的小数点向右移动一位,数的值相当于乘以 2:

162856k7fq7wapvkhp7qpq.png

用这种方法来存放小数,必然会存在一些问题,你能想到吗?

想不到的童鞋回复“朕想知道”查看!

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +3 收起 理由
hzxisme + 5 + 5 + 3
顾西凉 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-18 15:19:56 | 显示全部楼层
我来啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2015-12-18 20:24:31 | 显示全部楼层
zhen想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-12-18 21:32:25 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2015-12-19 09:46:12 | 显示全部楼层
想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-19 12:03:42 | 显示全部楼层
不错不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-12-19 20:12:46 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-20 15:24:14 | 显示全部楼层
郑想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-20 15:43:59 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-20 20:03:17 | 显示全部楼层
郑想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-21 12:37:25 | 显示全部楼层
:call:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-21 19:00:48 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-21 21:35:12 | 显示全部楼层
顶起来~~~~~~~~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-21 23:40:38 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 10:32:22 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 18:00:41 | 显示全部楼层
已回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 18:01:13 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-22 23:00:42 | 显示全部楼层
猜是因為這樣會太多位數
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-23 08:32:29 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-12-23 22:05:36 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-21 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表