【发布时间】:2014-01-15 00:00:37
【问题描述】:
我和更资深的人之间存在激烈且持续的分歧,我需要解决。因此,我转向你的互联网。现在不要让我失望!
目标是取一个十进制值并将其编码为 24 位。这是一个简单的线性刻度,因此 0x000000 是最小值,0xFFFFFF 是最大值。
我们都同意如何实现这一点的基本公式:(max-min)/range。问题是分母。对方说这应该是 1
谁是正确的?
【问题讨论】:
-
真正的问题是:“什么是十进制的 0xFFFFFF?”。
-
对不起,这是一个无符号值,被打包或 16777215。
-
这有什么关系?您没有指定表示方法,您是在问 2^24 与 2^24-1 是什么。
-
原始值为双精度值。它需要打包成 24 位,其中 0xFFFFFF 是特定双精度可以是最大值,而 0x000000 是最小值。假设我正在为汽车编码速度。 0.0 mph 表示 0x000000,150.0mph 表示为 0xFFFFFF。这是一个简单的线性比例。
-
你在说什么?它与我的任何 cmets 无关。
标签: c encoding bit-manipulation