判斷一個數是不是2的N次方,很牛的算法#define ISPOW2(x) (x) & (x-1) ? false : true
原理:由於2的N次方的數二進制表示是第1位爲1,其餘爲0,而x-1(假如x爲2的N次方)得到的數的二進制表示恰恰是第1位爲0,其餘爲1,兩者相與,得到的結果就爲0,否則結果肯定不爲0
判斷一個數是不是2的N次方,很牛的算法#define ISPOW2(x) (x) & (x-1) ? false : true
原理:由於2的N次方的數二進制表示是第1位爲1,其餘爲0,而x-1(假如x爲2的N次方)得到的數的二進制表示恰恰是第1位爲0,其餘爲1,兩者相與,得到的結果就爲0,否則結果肯定不爲0