gpt4 book ai didi

float和int之间的转换,字节表示?

转载 作者:行者123 更新时间:2023-12-05 01:34:02 25 4
gpt4 key购买 nike

我有一个问题涉及计算机系统中 float 和字节之间的表示差异。因此,例如,float 如何从 float 转换为 int 并返回;它导致完全不同的字节表示。有什么资源可以用来指引我正确的方向吗?任何帮助深表感谢!我在网上找不到任何东西,正确方向的链接会很有帮助!

最佳答案

最常见的 float 编码使用 IEEE 754。对于单精度数,有一个符号位 (s)、8 个指数位 (e) 和 23 个小数位 (f)。

对于s、e、f的大部分值,表示的值是-1s•2e-127•F,其中F是你得到的数通过写“1”。后跟 f 的 23 位,然后将该字符串解释为二进制数字。例如,如果 f 为 10000000000000000000000,则二进制数为 1.10000000000000000000000,即(十进制)1.5,因此 F 为 1.5。

当 0 < e < 255 时以上内容成立。值 0 和 255 是特殊的。

当 e 为 0 时,表示的值与上面相同,只是 F 以“0”开头。而不是“1.”。特别是,如果 f 为零,则表示的值为零。如果 f 不为零,则这些称为非正规数,因为它们小于上述主要方式表示的正常值。

当e为255,f为0时,根据符号位s,表示的值为+无穷大或-无穷大。当 e 为 255 且 f 不为零时,表示的值称为 NaN,而不是数字,用于调试或捕获错误或其他特殊用途。有安静的 NaN(不会导致陷阱;当您想继续计算以获得最终结果,然后弄清楚如何处理 NaN 时通常使用它们)和信号 NaN(会导致陷阱;它们通常用于当您因为发生错误而想要中止计算时)。

编码在不同平台上的显示方式可能有所不同,尤其是 32 位中的字节顺序。并且某些平台不使用 IEEE 754 编码。

double 编码采用相同的方案,只是e为11位,127(称为指数偏差)改为1023,f为52位。此外,指数的特殊值是它的 11 位最大值 2047,而不是 8 位最大值 255。

关于float和int之间的转换,字节表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418952/

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