计算整数是不是2的乘方
static void Main(string[] args)
{
    while (true) {
        int data = Convert.ToInt32( Console.ReadLine());
        Console.WriteLine(Check2(data));
    }
}

static bool Check2(int data) {
    //就是只有一句
    return (data & (data - 1)) == 0;
}


研究发现数的2的乘方的值,都是只有最高位是1,其他都为0

例如:2^1=10,2^2=100,2^3=1000

而-1后对应就是:2^1-1=1,2^2-1=11,2^3-1=111

所以对这两个数进行与操作为0的就是2的乘方数了


首页 我的博客
粤ICP备17103704号