刚好看到csdn的下载里面有一个,发给你连接看看
http://download.csdn.net/detail/u011583483/5943647

解决方案 »

  1.   

    网上找的,试了一下是可以的,但是我也看不太懂。交给楼下的大大们分析一下。
     public bool Check(int x)
     {
         return ((x & (x - 1)) == 0);
     }
      

  2.   

    如果x是2的N次幂,转换为二进制后,最高位是1,后面全是0,类似1000000000这种
    然后,x-1=0111111111,做与运算之后,结果为0相反,如果x不是2的N次幂,则二进制中会存在不止1个1,x-1之后,只有低位会反转,高位不变,与运算后结果大于0
      

  3.   

    //第一步:如果这个数是2,return true;
    //第二部:如果这个数是4的倍数,return true;