题目是统计一个数字中1的个数(ps:机器中的二进制存储)~~
//统计一个数中1的个数
int numberOf1(int n){
int count = 0;
unsigned int flag = 1;
while (flag) {
if (n&&flag) {
count++;
}
flag << 1;
}
return count;
}
int numberOf1Plus(int n) {
int count = 0;
while (n) {
char string[25];
_itoa_s(n,string,2); //查看中间结果~~
printf("十进制数,%d,二进制数:%s\n",n,string);
count++;
n = (n - 1) & n; //注意此行,关键之所在
}
return count;
}
前面的方法很直观,不断左移一位然后与。
后面那种方法就更快了,有几个1就需要几次,不明白过程的话,看一下中间结果就会知道了~~
这篇博客探讨了如何统计一个数字在二进制表示中1的个数,介绍了两种方法,包括直观的左移位与操作,以及更高效的方法,这种方法可以通过观察中间结果来理解其工作机制。

被折叠的 条评论
为什么被折叠?



