天天看點

C語言小程式設計之判斷一個數是否是2的n次方的巧妙方法

轉自http://blog.csdn.net/qq_26768741/article/details/50917787

今天我來分享一個判斷一個數是否是2的n次方巧妙方法: 

代碼如下:

#include<stdio.h>
int main()
{
    int num;
    scanf("%d", &num);
    while (num)
    {

        if (((num) & (num - )) == )
            printf("%d", num);
        break;
    }
    system("pause");
    return ;

}           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在這裡面,我們使用了num&(num-1)的運算。 

當我們演算下會發現一個規律。

C語言小程式設計之判斷一個數是否是2的n次方的巧妙方法

在這裡我麼你就會發現對于一個數,n&(n-1)會一直等于0。 

是以我們可以将這個方法來判斷一個數是不是2的n次方。

c++

繼續閱讀