我正在编写一个程序,我需要在0-9999之间规范化18位输入。这是我以前从未遇到的事情,
如果我错在这里,我已经搜索了互联网并纠正了我,但这就像将18位二进制(000000000000000000)输入转换为自然数然后将其除以1000一样简单。
是否有一种不同且更有效的方法????
谢谢
答案 0 :(得分:3)
不,您想要做的是将您的输入乘以0.03814697265
。
推理非常简单:您可以使用您的输入范围(0
.. 2^18
)并将其拆分为10000
“切片”。因此,每个切片的范围都会超过26
。然后,如果您将输入与原始范围除以26
(或将其乘以1
/ 26
),您将获得0
中的数字。 9999
范围。
编辑:根据您的背景,您可能需要知道我在^
使用指数的含义。可能没有实际意义,因为这个问题被标记为C并且它没有一流的取幂概念,但它绝对不是XOR!