【发布时间】:2021-08-18 17:31:54
【问题描述】:
此代码旨在将带符号的 16 位整数转换为新的浮点格式(类似于正常的 IEEE 754 浮点格式)。我理解常规的 IEEE 754 浮点格式,但我不明白这段代码是如何工作的,以及这种浮点格式是什么样子的。我将不胜感激代码的概念分别是多少位用于表示有效数字以及多少位用于表示这种新格式的指数。
#include <stdint.h>
uint32_t short2fp (int16_t inp)
{
int x, f, i;
if (inp == 0)
{
return 0;
}
else if (inp < 0)
{
i = -inp;
x = 191;
}
else
{
i = inp;
x = 63;
}
for (f = i; f > 1; f >>= 1)
x++;
for (f = i; f < 0x8000; f <<= 1);
return (x * 0x8000 + f - 0x8000);
}
【问题讨论】:
-
这不是我所谓的好代码;它是以一种非常难以理解的方式编写的。你在哪些方面苦苦挣扎?
-
你有代码,运行一些测试用例,看看它输出什么......
标签: c floating-point ieee-754