float32 between (0, 1) 无线传输优化
float32 between (0, 1) optimization for wireless transmission
我正在寻找一种优化 float32
值的方法,它只包含来自 (0, 1)
的无线传输值。
因为在我的例子中所有值都是正数,所以我已经修剪了 符号位,但现在我需要一些帮助
我认为,我的下一步将是修剪所有 Fraction 尾随零,然后以某种方式优化 Exponent 部分
但我不太确定,也许对于相同的情况已经存在一些位级优化,因为使用 float32
存储 (0, 1)
之间的值是非常常见的做法
数据完整性和纠错与我的情况无关
所以,我决定只使用 uint16_t
,其中 0=0f
和 65365=1f
,这对我来说已经足够了。但是在内存级别,我实际上根本没有使用 float 。这种基于整数的逻辑不仅帮助我实现了更短的无线传输字节序列,而且还使用了更少的内存
其他选项是使用 uint32_t
,这将使用相同数量的位
转换为浮点数,如果你需要的话,是这样的:
float to_float = (float) value / (float) UINT16_MAX
我正在寻找一种优化 float32
值的方法,它只包含来自 (0, 1)
的无线传输值。
因为在我的例子中所有值都是正数,所以我已经修剪了 符号位,但现在我需要一些帮助
我认为,我的下一步将是修剪所有 Fraction 尾随零,然后以某种方式优化 Exponent 部分
但我不太确定,也许对于相同的情况已经存在一些位级优化,因为使用 float32
存储 (0, 1)
之间的值是非常常见的做法
数据完整性和纠错与我的情况无关
所以,我决定只使用 uint16_t
,其中 0=0f
和 65365=1f
,这对我来说已经足够了。但是在内存级别,我实际上根本没有使用 float 。这种基于整数的逻辑不仅帮助我实现了更短的无线传输字节序列,而且还使用了更少的内存
其他选项是使用 uint32_t
,这将使用相同数量的位
转换为浮点数,如果你需要的话,是这样的:
float to_float = (float) value / (float) UINT16_MAX