java - 如何找到最接近另一个数字的数字,即 2 的幂?

标签 java algorithm

我正在为我的 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/

相关文章:

java - 与 Alexa 的意外通信问题

java - Spring 安全 OAuth 1.0a : providing already existing tokens

java - Java 中的点运算符和 static 关键字

algorithm - 排列数组中的数字以求和

java - 在银行系统应用程序中访问帐户余额

java - 如何使用缓冲阅读器从文本文件中保存行

algorithm - 3d 山生成算法?

algorithm - 动态规划方法是否需要这两个条件(最优结构和重叠子问题)?

algorithm - 识别编写以下代码的编程语言

最小曼哈顿距离算法