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。
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 ++重新解释是否可以移植。
添加回答
举报