如何判斷一個數是2的冪,主要是要找出2的冪次方的數的特點。我們知道,1個數乘以2就是將該數左移1位,而2的0次冪為1, 所以2的n次冪(就是2的0次冪n次乘以2)就是將1左移n位, 這樣我們知道如果一個數n是2的冪,則其只有首位為1,其后若干個0,必然有n & (n - 1)為0。(在求1個數的二進制表示中1的個數的時候說過,n&(n-1)去掉n的最后一個1)。因此,判斷一個數n是否為2的冪,只需要判斷n&(n-1)是否為0即可。
實現:
1: bool powerof2(unsigned int n)
2: {
3: return ((n & (n -1)) == 0);
4: }
