首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用32位字计算浮点数

用32位字计算浮点数
EN

Stack Overflow用户
提问于 2019-09-05 03:04:00
回答 1查看 165关注 0票数 1

我正在读帕特森的电脑组织第五版的书,我对这两页的文字感到困惑。第一页:

小数点第一个单词等于0.5吗?我看到符号是0,指数是-1,分数是0,有一个隐含的1。所以1.0_two * 2^-1 = 0.5?是那么回事吗?

为什么1.0 * 2^1是“较小的二进制数?”。第二个词不是更大吗?它在符号中有0,指数中有1,在意义上是隐含的1= 1.0 * 2^1 = 2?是那么回事吗?

我不明白这段话的意思:

因此,理想的表示法必须将最负指数表示为00 . 00_two,最正数表示为11 .. 11_two。这一约定称为有偏表示法,偏差是从正常的无符号表示中减去的数字,以确定实际值。

EN

回答 1

Stack Overflow用户

发布于 2019-09-05 03:40:04

如果把它们看作二进制数,第一个是0x7f800000,第二个是0x00800000,所以第二个是较小的二进制数,尽管它代表一个较大的浮点数。因此,使用二进制比较或排序将做错误的事情。

因此,取而代之的是指数的有偏表示,这意味着0.5的二进制值为0x3f000000,而2.0的二进制值为0x40000000,二进制比较“工作”用于比较和排序浮点数。

问题是,这仍然是一个sign+magnitude表示,所以您需要一个sign+magnitude二进制比较,而大多数硬件使用的是2s-补码。因此,您仍然需要特殊的浮点比较指令/硬件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57797899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档