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的乘方数了