gpt4 book ai didi

c - 将decimal/int转换为float时如何决定何时舍入

转载 作者:行者123 更新时间:2023-11-30 19:15:28 29 4
gpt4 key购买 nike

我有一个整数 -2147483647,十六进制表示为 0x8000001。当我使用在线浮点转换器时,它说由于四舍五入,它将转换为 -2147483648。

现在我必须在 c 中以单精度实现这个 int 到 float 函数。

我已经实现了所有其他功能,但我不知道舍入。我什么时候决定何时进行舍入?

**编辑:这是我到目前为止所拥有的功能。 (按照函数工作原理的顺序)
1)首先,我检查 int 是否为负数,将其取反并将其分配给无符号 int。我还将符号位设置为1。

2)为了获取指数,我搜索 unsigned int 左侧的第一个“1”位,并获取其位置。

3) 我将 127 添加到该位置,并将其向左移动 23 位以匹配 IEEE 754 标准。

4) 使用 2) 中的位置计数器,我将 unsigned int 向右对齐,以便第 31 位是第二个最右边的“1”位。 (因为您省略了第一个“1”位,因为它在每个 IEEE 浮点中都假定)

5) 我将该 int 右移 9 位,使其适合标准的尾数槽。

6) 我添加符号位、指数和尾数以获得原始 int 的最终位表示。

最佳答案

单精度 -2147483647 的三个最接近的值(以十六进制和整数显示)是:

hex ceffffff = -2147483520
hex cf000000 = -2147483648
hex cf000001 = -2147483904

因此使用十六进制 cf000000 = -2147483648,因为它是最接近的。

关于c - 将decimal/int转换为float时如何决定何时舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556394/

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