1

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

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

有没有其他更有效的方法???

谢谢

4

1 回答 1

3

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

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

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

于 2012-08-15T19:11:13.600 回答