2的幂

个数 n 是 222 的幂,当且仅当 nnn 是正整数,并且 nnn 的二进制表示中仅包含 111 个 111。

因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 000 即可。下面介绍两种常见的与「二进制表示中最低位」相关的位运算技巧。

第一个技巧是


n & (n - 1)

public bool IsPowerOfTwo(int n) {      
    if(n==1)
    {
        return true;
    }
    else
    {
       
        while(n>2){
             if (n%2==1)
           {
            return false;
           }
            n=n/2;
        }
        if(n==2)
        {
          return true;
        }
        else
        {
            return false;
        }
       
    }        

    }
posted @ 2024-04-19 00:49  yinghualeihenmei  阅读(8)  评论(0编辑  收藏  举报