我知道你可以将二次幂的数字分成两半:

halfintR = some32bitint & 0xFFFF
halfintL = some32bitint >> 16

对于一个由两个空间的非幂次限定的整数,你能做同样的事吗?

(假设你希望你的范围被限制为适合4位数字的52位空格的整数集合)

有帮助吗?

解决方案

您可以使用以下

rightDigits = number % 2704 // 52 squared
leftDigits = number / 2704

其他提示

嗯,当然。 <代码>&安培; 0xffff 与%0x10000 &gt;&gt;相同16 / 0x10000 相同。只有在使用移位和屏蔽等位操作完成时,除以2的幂才能更有效率。分部适用于任何数字(在代表范围内)。

一旦您意识到&amp; &gt;&gt; 用于执行 modulo division 分别计算,你可以写出你想要的东西:

lower = some4DigitsNumberBase52 % (52 * 52)
upper = some4DigitaNumberBase52 / (52 * 52)

这是进行基础计算的基础。您还可以从算法中导出解决方案,该算法在特定基数中显示数字:您如何得出最右边的两位数字和最左边的2位数字。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top