c - 存储固定范围 float 的有效方法

标签 c floating-point encode floating-point-precision memory-optimization

我正在处理一个(大) float 数组,每个 float 占用 4 个字节。

考虑到我的 float 范围在 0 到 255 之间,有没有办法将每个 float 存储在小于 4 个字节中?

我可以对整个数组进行任意数量的计算。

我正在使用 C。

最佳答案

您需要多少精度?

您可以将每个 float 存储为 2 个字节,方法是将其表示为 unsigned short(范围从 0 到 65,535)并在需要时将所有值除以 2^8实际值。这与使用定点格式而不是浮点格式本质上是一样的。

但是,当您执行此操作时,您的精度限制为 1.0/(2^8) = 0.00390625

关于c - 存储固定范围 float 的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9274405/

相关文章:

c - Linux 内核 : why do 'subclass' structs put base class info at end?

c - ((uint32_t *)arg) 是什么意思? (上下文如下)

在 C 中创建一个要求输入和输出的函数,然后在 main 中调用该函数?

小数点后没有任何零的 Ruby float

java - Java 中的 Base64 编码与 C# 中的 HttpServerUtility.UrlTokenEncode

c - 在 Linux 上用 C 打开文件时出现问题

c++ - 如何枚举最小值和最大值之间的所有浮点值

python - float 之间不直观的等式

Java Date 转换为 String 并返回 Date,相等性检查失败

java - 将txt文件中的内容读取到包含特殊字符的字符串