判断一个数是否为2的N次方问题
来源:互联网 发布:剑灵捏脸数据人男邪气 编辑:程序博客网 时间:2024/06/04 17:46
对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
不过上面的方法并不是较好的方法,其实还有更为简洁高效的方法
一个整数,若是2的n次方,有没有想过对这个整数的2进制进行考虑,比如12,它的二进制为:1100
2 10
4 100
13 1101
16 10000
32 100000
从上面的举例我们发现,凡是2的N次方的整数,其二进制码只有一个1。
假设A为要证明的整数,B等于A-1,我们假设A为2的N次方数,那么A&B = 0,这很好证明。那是不是满足A&B = 0就能证明A是2的N次方数呢?
假设一个数的二进制为1000000000000000(这里为int型:两个字节),那这个数减去1则变为0111111111111111。我们知道,在计算机中,数都是以其二进制的补码放置的,最高位为1代表负数,最高位为0代表正数。上面两个数中,
1000000000000000为负数,0111111111111111为正数,这两个数相与为0,但1000000000000000并不是2的N次方(2的N次方为正数)。
因此,倘若一个数为2的N次方,那么该数应满足大于0且该数和该数减一后的值相与等于0时才为2的N次方。
0 0
- 判断一个数是否为2的N次方问题
- 判断一个数是否为2的N次方问题
- 如何判断一个数是否为2的N次方
- 如何判断一个数是否为2的N次方
- 如何判断一个数是否为2的N次方
- 判断一个数是否为2的N次方
- 判断一个数是否为2的n次方
- 判断一个数是否为2的n的次方数,六种方法
- 使用位运算判断一个数是否为2的N次方
- 位运算判断一个数是否为2的n次方
- 面试题 判断一个数是否为2的n 次方
- 【C语言】判断一个数是否为2的n次方
- C语言——不使用循环判断一个数是否为2的N次方
- 判断一个数是否是2的n次方
- 判断一个数(x)是否是2的n次方
- java判断一个数是否是2的N次方
- 判断一个数是否是2的n次方
- 如何判断一个数是否是2的n次方
- 卷积神经网络CNNs的理解
- 道德经70章我的理解
- 第三十九项目3——求1000000以内的正整数n,要求9n是n的反序数。
- 实用的win10快捷键
- 2D空间中使用Quadtree四叉树进行碰撞检测优化
- 判断一个数是否为2的N次方问题
- 1613-3-傅溥衍 总结《2016年12月22日》【连续第八十三天总结】
- Java内部类的使用小结
- 指令周期、机器周期、’时钟周期
- 过滤驱动实现目录重定向之(完整版本程序下载以及使用)
- Qt—简易加法器 一、目标
- 素数C语言代码。ACM平台上总有些题目不是提交输出超限就是答案错误,,,,,,,,不懂,
- Git(八)、Bug分支
- Java中堆内存和栈内存详解