作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:检查一个数是否是 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/
问题:检查一个数是否是 4 的幂。 我在 Java 中的解决方案: public static boolean isPowerOfFour(int num) { return (Math.lo
我正在尝试生成斐波那契数列以与素数列表进行比较(例如)。两个列表都从第一个已知的 fibo/prime 数字开始,到第 10000 个结束。问题是:图形比较(图表)只有在某些函数(如“logBase
solrize在#haskell 中询问了有关此代码的一个版本的问题,我尝试了其他一些案例,想知道发生了什么。在我的机器上,“快速”代码大约需要 1 秒,“慢”代码需要大约 1.3-1.5 秒(所有内
我是一名优秀的程序员,十分优秀!