欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

如何快速判断给定整数是4的N次幂

  在《如何快速判断正整数是2的N次幂》文章中我们谈到如何快速的判断给定的正整数是否为2的N次幂,今天来谈谈如何快速地判断一个给定的正整数是否为4的N次幂。将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0; 因此问题可以转化为判断1后面是否跟了偶数个0就可以了。
  4的整数次幂的二进制数都为 (4)100、(16)10000、(64)1000000......另外,4的幂次方4n也可以写为22*n,即也可以写为2的幂次方,当然就满足2的幂次方的条件了,即num & num - 1 == 0。
  思路:首先用条件num & num - 1 == 0来判断是否为2的幂次方,若不满足,则不是;若满足,在用条件num & 0x55555555来判断,若为真,则这个整数是4的幂次方,否则不是。程序实现如下:

public static boolean check(int num)
{
    if (num <= 0) return false;
    if (num & (num - 1)) return false;
    return x & 0x55555555;
}

第一个num <= 0是因为4的N次幂不会小于零,所以所有输入的num小于零的一律都不是4的幂次方。(完)

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【如何快速判断给定整数是4的N次幂】(https://www.iteblog.com/archives/764.html)
喜欢 (5)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!