gpt4 book ai didi

c++ - 内存中的浮点表示对我来说不清楚

转载 作者:太空宇宙 更新时间:2023-11-04 05:27:44 25 4
gpt4 key购买 nike

我的任务是获取 float 的小数部分,然后将其存储在一个整数中。这似乎很容易。我做了这个测试:

float f = 3.1415f;
printf("int pres. of float: %d\n"
"int: %d", *((int *)&f), 31415);

输出:

内部压力。 float :1078529622

整数:31415

我将它们更改为基数 2 以查看 31415 的位置。

0100 0000 0100 1001 0000 1110 0101 0110 - 3.1415
0111 1010 1011 0111 - 31415

我不知道该怎么办。我怎样才能得到分数作为一个简单的整数?

最佳答案

如果我们取 2.5 而不是 3.1415,因为它很容易理解...

因此您的假设是 2.5 和 25 应该具有相同的二进制格式。不是这种情况。 25 = 0x19 = 11001。2.5 = 10.1。完全不是一回事。

如果您想为 3.1415 做同样的数学运算,它是这样的:

3      = 11 (I can do that)
1/8 = 0.001
0.1415 - 0.125 = 0.0165
1/64 = 0.000001
0.0165 - 0.015625 = 0.000875
1/2048 = 0.00000000001

此时我们还有一些 0.1415 的分数需要处理,但粗略的结果是 11.00100100001。

现在,如果我们比较您的二进制输出(从尾数部分开始),并插入一个小数点,并考虑 float “忽略第一个”:

  11.00100100001
1.00100100001110

看来我上面的涂鸦并没有完全消失...... ;)

关于c++ - 内存中的浮点表示对我来说不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160480/

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