gpt4 book ai didi

c - IEEE 754 : How exactly does it work?

转载 作者:太空狗 更新时间:2023-10-29 15:27:30 25 4
gpt4 key购买 nike

为什么以下代码的行为与在 C 中的行为相同?

float x = 2147483647; //2^31
printf("%f\n", x); //Outputs 2147483648

这是我的思考过程:

2147483647 =   0      1001 1101      1111 1111 1111 1111 1111 111

(0.11111111111111111111111)base2 = (1-(0.5)^23)base10
=> (1.11111111111111111111111)base2 = (1 + 1-(0.5)^23)base10 = (1.99999988)base10

因此,要将 IEEE 754 表示法转换回十进制:1.99999988 * 2^30 = 2147483520

那么从技术上讲,C 程序必须打印出 2147483520,对吧?

最佳答案

要表示的值将是 2147483647。接下来可以用这种方式表示的两个值是 2147483520 和 2147483648。

由于后者更接近无法表示的“理想值”,因此它被使用:在 float 中,值会四舍五入,而不是被截断。

关于c - IEEE 754 : How exactly does it work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7005862/

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