判断一个整数是否为2的幂


  • 也许你会想到不断将这个数除以2
  • 本次方法利用二进制的巧妙之处
  • 一个不为0的十进制数的二进制数有且只有一个1,所以若该数是二进制数,那么它减1与本身进行按位与(&)运算结果为0

#define is_power_of_2(n) ((n) && !((n) & (n - 1)))
  • 测试

#include 

#define is_power_of_2(n) ((n) && !((n) & (n - 1)))

int main() {
    for (int i = 1; i <= 1 << 20; i++) {
        is_power_of_2(i) && printf("%d\n", i);
    }
    return 0;
}

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录