欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:1059
  2. 浏览总数:14,234,778
  3. 评论:4166
  4. 分类目录:111 个
  5. 注册用户数:7026
  6. 最后更新:2019年9月18日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
开发爱好者社区:
bigdata_ai

如何快速判断给定整数是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的幂次方。(完)

本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【如何快速判断给定整数是4的N次幂】(https://www.iteblog.com/archives/764.html)
喜欢 (5)
分享 (0)
发表我的评论
取消评论

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