From 48d47ca5d1d314c27284224c2814b201b3a35832 Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Thu, 21 Oct 2021 21:57:03 +0800 Subject: [PATCH] fixed a settings error --- .../count.md" | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 "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/2.\344\272\214\350\277\233\345\210\266\346\225\260/count.md" 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/2.\344\272\214\350\277\233\345\210\266\346\225\260/count.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/2.\344\272\214\350\277\233\345\210\266\346\225\260/count.md" new file mode 100644 index 0000000..834656c --- /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/2.\344\272\214\350\277\233\345\210\266\346\225\260/count.md" @@ -0,0 +1,74 @@ +# 计算位数 + +计算整数的二进制形式有多少位。 + +## template + +```c +#include + +$code + +int main(char** args){ + printf("bits(%d) has %d bits\n", 100, bits(100)); + printf("bits(%d) has %d bits\n", 32, bits(32)); + printf("bits(%d) has %d bits\n", 10, bits(10)); + printf("bits(%d) has %d bits\n", 25, bits(25)); + printf("bits(%d) has %d bits\n", 7, bits(7)); + return 0; +} +``` + +## 答案 + +```c +unsigned int bits(unsigned int x){ + unsigned int n = 0; + while(x){ + x >>= 1; + n++; + } + return n; +} +``` + +## 选项 + +### 位移计算没有保存 + +```c +unsigned int bits(unsigned int x){ + unsigned int n = 0; + while(x){ + x >> 1; + n++; + } + return n; +} +``` + +### 没有括号导致流程错误 + +```c +unsigned int bits(unsigned int x){ + unsigned int n = 0; + while(x) + x >>= 1; + n++; + + return n; +} +``` + +### 运算符错误 + +```c +unsigned int bits(unsigned int x){ + unsigned int n = 0; + while(x){ + x << 1; + n++; + } + return n; +} +``` \ No newline at end of file -- GitLab