2.3.1_2 浮点数的表示 IEEE 754(例题训练)

引入几个重要的例题。

接下来把例题改成双精度浮点型,十进制真值不变。


对于这个题目来说,可能会被卡在这一步,就是0.4375,复杂的一个小数,怎么把这个数转换成的

二进制定点记法呢?可以这么去处理。

如果题目给了一个很复杂的小数,把它转换成二进制,可以这么做。第一种方法拼凑法。首先在草稿纸上写出小数点的前面比特,以及小数点的后面各个比特的权值等于多少,再尝试用各个比特的全值去拼凑出0.4375这样的值,刚好0.25+0.125,再加上0.0625,加和的值就是0.4375,所以这个值转换成二进制,就应该是0.0111。第一种方法对于一个比较长的小数,拼凑起来也没那么容易,所以下次遇到比较长的小数,可以尝试用第二种方法乘基取整法。

把题目给的十进制数的小数部分给抠出来,然后用乘基取整的方式,确定每一个比特应该是多少所谓的乘基,就是乘以基数。二进制的基数等于2,十进制的真值的符号位不考虑。对于比较复杂的小数来说,乘基取整法来转换二进制可能会更快一些。

这个题目同样是给了一个32比特的机器数,这个32比特的机器数有可能是一个带负号整数,带符号整数是用补码表示的,也有可能是一个float型的浮点数。

由于这一小节重点讨论的是浮点数,所以先尝试着把这个二进制串转换成浮点数,对应的浮点数真值应该是-2的17次方。

float型不行,就只能按照int型,也就是带符号的整数去解读。由于带符号整数都是用补码去保存的,首先观察最高位1,说明它是一个负数,要解读补码的真值,需要把补码先转换成原码,一个负数的补码转原码方法很简单:从右往左扫,扫到第一个比特1,在这个比特1的左边画一条线,这条线的再往左的部分除了符号位之外,0变1,1变0,符号位保持不变,以及刚才这条线右边的所有的比特都保持不变,这样就把补码转换成了原码。变成原码之后,再解读它的真值就变得很简单了。首先,它是一个负数,有三个1,三个1的权值分别是2的29、28和27次方,把这三个比特的权值分别加起来,再结合符号进行一些化简,就可以得到最终的正确答案,也就是A选项。

相关推荐
专注仿真1 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
码爸1 小时前
支持向量机介绍与示例
算法·机器学习·支持向量机
怕浪猫1 小时前
2028编程圈很火的10个Skills
算法·面试·github
Nil2086 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
Shaoshing6 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
loulanyue_7 小时前
构建房产认知决策智能:Harness底座与AI自进化的技术实践——读贝壳首席算法科学家尹俊希2026云栖专场演讲
人工智能·算法
碧海银沙音频科技研究院7 小时前
基于炬芯ATS录音卡BLE控制协议
人工智能·嵌入式硬件·算法·语音识别
suhan7 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法
姜鱼问生8 小时前
Docker Volume 备份与恢复实战:不停机迁移数据
后端·算法·架构
suhan8 小时前
【数据结构】三、栈和队列:5.顺序队列(循环队列)(初始化,判空判满,入队,出队,实例)
数据结构·后端·算法