在0-9999之间标准化18位输入

时间:2012-08-15 19:06:41

标签: c normalization bit

我正在编写一个程序,我需要在0-9999之间规范化18位输入。这是我以前从未遇到的事情,

如果我错在这里,我已经搜索了互联网并纠正了我,但这就像将18位二进制(000000000000000000)输入转换为自然数然后将其除以1000一样简单。

是否有一种不同且更有效的方法????

谢谢

1 个答案:

答案 0 :(得分:3)

不,您想要做的是将您的输入乘以0.03814697265

推理非常简单:您可以使用您的输入范围(0 .. 2^18)并将其拆分为10000“切片”。因此,每个切片的范围都会超过26。然后,如果您将输入与原始范围除以26(或将其乘以1 / 26),您将获得0中的数字。 9999范围。

编辑:根据您的背景,您可能需要知道我在^使用指数的含义。可能没有实际意义,因为这个问题被标记为C并且它没有一流的取幂概念,但它绝对不是XOR!