3793|0

183

帖子

12

TA的资源

一粒金砂(高级)

楼主
 

《Rust实战》读书笔记——第5章,一切都是数据,浮点0有点特殊 [复制链接]

本帖最后由 nemon 于 2024-6-12 15:59 编辑

《Rust实战》第5章的标题是“深入理解数据”,但是这一章的示例却是CPU模拟器,这是肿么联系起来的呢?

CPU是有指令集的,指令就意味着一系列固化在硬件里的运算,如果抽象来的思考,把一次指令执行可以认为是有输入有输出的一个函数。那么就可以把每个指令编一个号(对应一个操作码),这样,程序就变成了指令编号和数据的集合——于是,在CPU面前,一切都是数据。顺便提一句,这给编程带来了灵活性,但是也留下了隐患。本章没有解释rust如何解决这个隐患,但是却花了大量篇幅讨论了相同的一段内存在不同解释下的意义——或者我们用原本的角度去描述,就是整数、浮点数、定点数 的规范。

书上有的部分不详述了,聊一下作者的一个疏漏。

其实也不算疏漏,大多数教材讲浮点数的时候,都会提到这个式子:

F=(-1)^b\times m \times 2^{(e-b)}

书上这里负一忘了加括号了,这是印刷错误,暂且不提,我们来聊一聊0。但实际上,为了节约长度,真实的式子是:

F=(-1)^b\times (1+m \times 2^{-23}) \times 2^{(e-127)}

可以看出,由于引入了“1”这个常量,是无法表示浮点数0的,所以这里补充一下课外知识——IEEE R32.24 标准强行规定, b = 0 , e = 0 , m= 0  时,N = 0 。而且为了减少0与最小数字和最小数字与次小数字之间步长的突 然下跌,还有个,subnormal规定:当指数位全 0 的时候,指数表示为 -126 而不是 -127( 和指数为最低 位为 1 一致),此时公式改成:

F=(-1)^b\times (m \times 2^{-23}) \times 2^{(e-126)}
 

 

点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表