我正在为我的 2D 游戏创建一个世界生成器,它使用 Java 中的菱形方 block 算法,而且我听说它只适用于(或者至少,只适用于)2n+1(二的幂)。
生成世界的方法是用 generateWorld(width, height)
调用的,但这会产生一个问题。我希望能够输入一个 width
,如果输入的宽度不是,该函数将找到最接近的是 2 的幂的数字。我真的不知道该怎么做,所以非常感谢所有帮助!
总结:如果一个数字不是二的幂,我想找到最接近那个的数字,是二的幂。
最佳答案
您可以像这样向上舍入到更高的 2 的幂(如果它已经是 2 的幂则没有变化):
x = x - 1;
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
return x + 1;
对于不存在下一个更高次幂的输入,它将给出 0。
另一个候选人只是一半。然后取最近的。
关于java - 如何找到最接近另一个数字的数字,即 2 的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583122/