gpt4 book ai didi

java - 判断一个数是否是4的幂,logNum % logBase == 0 vs (logNum/logBase) % 1 == 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:48 26 4
gpt4 key购买 nike

问题:检查一个数是否是 4 的幂。

我在 Java 中的解决方案:

public static boolean isPowerOfFour(int num) {
return (Math.log(num) % Math.log(4) == 0);
}

但在某些情况下似乎不合适,例如当 num 为 64 时。

我发现如果我稍微更改一下代码,它就可以正常工作。

public static boolean isPowerOfFour(int num) {
return (Math.log(num) / Math.log(4) %1 == 0);
}

我觉得两种方案做的是一样的,检查logNum/logBase的余数是否为0。但是为什么第一种方案不行呢?是因为解决方案不正确还是与某些低级别的 JVM 相关?谢谢。

最佳答案

基于@dasblinkenlight 的回答,您可以轻松地将两个条件(首先是 2 的幂,然后是 2 的所有可能的幂中的任何 4 的幂)与一个简单的掩码结合起来:

public static boolean isPowerOfFour(int num) {
return ((( num & ( num - 1 )) == 0 ) // check whether num is a power of 2
&& (( num & 0xaaaaaaaa ) == 0 )); // make sure it's an even power of 2
}

没有循环,没有转换为 float 。

关于java - 判断一个数是否是4的幂,logNum % logBase == 0 vs (logNum/logBase) % 1 == 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com