[leetcode]Power of Two

作者:luozhipeng   发表日期:2015-7-16  浏览:1,038次

Given an integer, write a function to determine if it is a power of two.

poweroftwo

题意:判断一个整数是否为2的x幂,如2^0=1,2^1=2,所以1,2...满足

 

输入:整数n

返回:true或false

 

思路:对于正数n,如果它是2的x幂,那么n的二进制数中只有一位是1,如8-->0000  ... 1000,而8-1=7=0000 ... 0111,8&7= 0000 ... 0000,也就是说如果n满足条件那么n&(n-1)等于0。然而如果n的二进制中不只一位是1,那么n&(n-1)必定不等于0,如6=0000 ... 0110,而6-1=5=0000 ... 0101,6&5=0000 ... 0100 = 4。其实n&(n-1)的含义就是n减去二进制n中最后一位1表示的数字。

 

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n<=0)
            return false;
        return (n&(n-1))==0?true:false;
    }
};

 

标签:

本文固定链接: http://www.luozhipeng.com/?p=411
转载请注明: luozhipeng 2015-7-16 于 罗志鹏的BLOG 发表

上一篇: :下一篇
评论:请安装多说插件!
返回顶部