leetcode231-Power of Two(判断一个整数n是否为2的方幂)
2015-05-25 21:53
549 查看
问题描述:
判断一个整数n是否为2的方幂,即是否可以表示成2^X的形式。
问题求解:
判断一个数是2的幂,主要是要找出2的幂次方的数的特点。我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0 !!!(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去掉n的最后一个1)。因此,判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0即可。
执行结果:
判断一个整数n是否为2的方幂,即是否可以表示成2^X的形式。
问题求解:
判断一个数是2的幂,主要是要找出2的幂次方的数的特点。我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0 !!!(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去掉n的最后一个1)。因此,判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0即可。
#include <iostream> using namespace std; bool Is2Power(int n) { if(n<=0) { return false; } return 0==(n & (n-1)); } int main() { for(int i=0;i<=8;i++) { cout <<i<<"是否为2的方幂:"<< Is2Power(i) << endl; } return 0; }
执行结果:
0是否为2的方幂:0 1是否为2的方幂:1 2是否为2的方幂:1 3是否为2的方幂:0 4是否为2的方幂:1 5是否为2的方幂:0 6是否为2的方幂:0 7是否为2的方幂:0 8是否为2的方幂:1
相关文章推荐
- [LeetCode-231] Power of Two(判断一个数是不是2的若干次幂)
- [leetcode] Power of Two 判断一个数是否是2的平方
- 关于求一个整数是否为2的幂,isPowerOfTwo()的分析
- Power of Two:判断一个数是否是2的幂
- LeetCode刷题: power of two (判断一个数是不是2的幂次方)
- [LeetCode]231. Power of Two-判断一个整数是否是2的幂次方
- 【LeetCode 231_整数_位运算】Power of Two
- leetcode解题之231# Power of Two&326. Power of Three Java版 (判断是否为2,或者3 的幂)
- Leetcode231 Power of Two
- leetcode_231_Power of Two(easy)(C++)
- Palindrome Number leetcode 判断一个整数是否是回文
- [Leetcode]#231 Power of Two
- leetcode 231 Power of Two C++
- LeetCode 231:Power of Two
- LeetCode(231)-- Power of Two
- LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
- LeetCode231 Power of Two
- [Leetcode 231, Easy] Power of Two
- LeetCode 231 Power of Two(三解)
- [LeetCode] 231. Power of Two(判断整数是否是2的幂)