首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么frexp()不产生科学表示法?

为什么frexp()不产生科学表示法?
EN

Stack Overflow用户
提问于 2014-07-24 08:34:33
回答 1查看 587关注 0票数 11

科学的表示法是表达一个明确数量级的数字的常用方法。首先是一个非零的数字,然后是一个基点,然后是一个分数部分,然后是指数。在二进制中,只有一个可能的非零数字。

浮点数学涉及一个等于1的隐式第一位数字,然后尾数位“跟随基数点”。

那么,为什么frexp()将基指向隐式位的左边,并返回一个数字在[0.5,1]中,而不是像科学表示法那样的[1,2]?有什么值得提防的溢出吗?

有效地,它减去一个以上的偏置值指定的IEEE 754/ISO 60559。在硬件中,这可能会将添加的XOR交换为XOR。单就这一点而言,这似乎是一个相当弱的论点,因为在许多情况下,恢复正常需要另一个浮点操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 09:00:05

理据说:

4.5.4.2 frexp函数 函数frexp、ldexp和modf是库的其余部分使用的原语。有一些情绪,放弃他们的原因,相同的原因,电子gcvt,fcvt,和gcvt,但他们的追随者拯救了他们的一般用途。它们的使用是有问题的:在非二进制架构上,ldexp可能会失去精度,而frexp可能效率低下。

可以推测,“库的其余部分”使用frexp的约定编写更方便,或者传统上已经针对这个接口编写,尽管它没有提供任何好处。

我知道这并没有完全回答这个问题,但这并不完全符合我的意见。

我还应该指出,C语言设计中的一些选择早于IEEE 754。frexp 返回的格式可能与PDP-11的浮点格式或其他任何最初引入函数frexp的体系结构都有关系。编辑:也见第155页的手册为一个PDP-11模式.

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

https://stackoverflow.com/questions/24928833

复制
相关文章

相似问题

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