gpt4 book ai didi

floating-point - 十六进制浮点值的用途?

转载 作者:行者123 更新时间:2023-12-01 14:04:00 28 4
gpt4 key购买 nike

我搜索后发现的一切都是如何使用它们。我真的很好奇为什么。使用十六进制格式的浮点值有什么好处?

编辑澄清:

我正在学习获得 Zend PHP 工程师证书。在其中一个练习测试中,它发布了一段带有一些变量集的代码,做一些基本的数学运算,然后询问输出是什么。变量集之一是“0xFF”。据我了解,它将 255.0 表示为浮点值。

所以,我的问题是这是什么时候

0xfed01

比这更好用
1043713

最佳答案

C 具有十六进制浮点常量,形式以“0x”开头,然后是十六进制数字,可选地包括小数点,然后是“p”,然后是十进制的有符号指数,它是 2 的幂。例如,0x1.fp-2 是 (1 + 15/16)•2-2 = .484375。 (这些常量是 double 不带后缀,float 带有 fF 后缀,long double 带有 lL 后缀。)

十六进制浮点常量使编译器很容易重现精确值。

使用十进制常量,将十进制数转换为二进制浮点存在一些困难。这是因为某些值可能非常接近某个值向上或向下舍入的点,具体取决于尾随数字。并且为此进行算术可能很困难,因为数值算术会受到舍入误差的影响。在计算涉及超出通常由浮点格式表示的数字的精确值时,试图避免舍入错误需要仔细的工程设计。

这是一个已解决的问题 (Correctly Rounded Binary-Decimal and Decimal-Binary Conversions by David M. Gay, 1990)。但是,一些编译器没有正确实现它。程序员编写代码来转换十六进制浮点数更容易,因为它非常适合二进制格式:您可以通过检查几个单独的数字轻松判断一个数字是高于还是低于舍入点;不需要涉及舍入误差的算术。

通常,关心浮点精度的软件工程师会通过使用特殊软件(例如 Maple 或 Mathematica 或他们自己的自定义任务特定软件或组合)生成十六进制浮点常量,以准备在程序中使用。

还可以通过指定其内部表示来创建浮点常量,例如通过创建无符号整数和浮点对象的联合,并使用整数的十六进制值初始化联合。这需要了解浮点值的编码格式。应该很少这样做。通常它仅用于特殊目的,例如准备 NaNs带有有效载荷并在执行专门的浮点运算的软件中工作。

关于floating-point - 十六进制浮点值的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21882862/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com