diff --git "a/data/3.C\350\257\255\350\250\200\351\253\230\351\230\266/3.\344\275\215\350\277\220\347\256\227/1.\344\275\215\345\222\214\345\255\227\350\212\202/check.md" "b/data/3.C\350\257\255\350\250\200\351\253\230\351\230\266/3.\344\275\215\350\277\220\347\256\227/1.\344\275\215\345\222\214\345\255\227\350\212\202/check.md" new file mode 100644 index 0000000000000000000000000000000000000000..a54b009048f3be186fa6736082ba3e7fb70f7a08 --- /dev/null +++ "b/data/3.C\350\257\255\350\250\200\351\253\230\351\230\266/3.\344\275\215\350\277\220\347\256\227/1.\344\275\215\345\222\214\345\255\227\350\212\202/check.md" @@ -0,0 +1,49 @@ +# 数的结构判断 + +下列代码用于判断一个给定整数 x ,是否是 2 的正整次幂。其中能正确执行的是: + +## aop + +### before + +``` +#include +``` + +### after + +```c +printf("check(%d) return %d\n", 100, check(100)); +printf("check(%d) return %d\n", 64, check(64)); +printf("check(%d) return %d\n", 2, check(2)); +printf("check(%d) return %d\n", 32, check(32)); + +``` + +## 答案 + +```c + +bool check(int x) { + if(x < 2){ + return 0; + } + return x & (x-1) == 0; +} + +``` + +## 选项 + +### 没有考虑边界 + +```c + +bool check(int x) { + if(x < 2){ + return 0; + } + return x & (x-1) == 0; +} + +```