为了账号安全,请及时绑定邮箱和手机立即绑定

现实世界中的任何CPU是否不使用IEEE 754?

现实世界中的任何CPU是否不使用IEEE 754?

www说 2019-10-12 10:34:23
我正在基于以下假设优化数字/统计库的排序功能:在过滤掉所有NaN并进行一些调整之后,浮点数可以比较为32位整数而不改变结果,而双精度数可以比较为64位整数。这似乎可以将这些数组的排序速度提高40%左右,只要浮点数的位级表示为IEEE 754,我的假设就成立。人们实际使用的任何实际CPU(不包括)在嵌入式设备中(此库不针对的对象)使用其他可能会打破此假设的表示形式?https://zh.wikipedia.org/wiki/Single-precision_floating-point_format(binary32,也称为float使用IEEE754的系统)https://zh.wikipedia.org/wiki/Double-precision_floating-point_format(binary64,也称为double使用IEEE754的系统)
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

除了有缺陷的奔腾以外,任何基于x86或x64的CPU都使用IEEE 754作为其浮点运算标准。


这里是FPA标准及其采用的简要概述。


IEEE 754:       Intel x86, and all RISC systems (IBM Power

                and PowerPC, Compaq/DEC Alpha, HP PA-RISC,

                Motorola 68xxx and 88xxx, SGI (MIPS) R-xxxx,

                Sun SPARC, and others);


VAX:            Compaq/DEC


IBM S/390:      IBM (however, in 1998, IBM added an IEEE 754

                option to S/390)


Cray:           X-MP, Y-MP, C-90; other Cray models have been

                based on Alpha and SPARC processors with

                IEEE-754 arithmetic.

除非您计划在相当奇特的CPU体系结构上支持库,否则可以安全地假设目前有99%的CPU符合IEEE 754。


查看完整回答
反对 回复 2019-10-12
?
动漫人物

TA贡献1815条经验 获得超10个赞

PowerPC处理器(Macs直到2006-2007年才使用Mac,目前使用的IBM服务器数量很多)使用128位格式,其中包括两个double表示long double,如果使用IEEE 754扩展格式,则采用这种格式。


但是,在C或Objective-C中,没有可移植的方式将32位或64位浮点数解释为整数(假设float和uint32_t或double和uint64_t具有相同的位数)。当我需要做这种事情时,我不得不根据编译器编写不同的代码(一个使用联合,一个通过将double *转换为long long *)。不知道用C ++重新解释是否可以移植。


查看完整回答
反对 回复 2019-10-12
  • 3 回答
  • 0 关注
  • 898 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信