整数中含有一的个数

整数中含有1的个数?问题件代码。C/C++ code#include stdafx.h#includeiostreamusing namespace stdint

整数中含有1的个数?
问题件代码。

C/C++ code
#include "stdafx.h"#include<iostream>using namespace std;int solution(int n);int main(int argc, char* argv[]){    cout<<solution(10)<<endl;    return 0;}int solution(int n){    int count=0;    int flag=1;    while (flag)    {        if((n&flag) ==1)//为嘛改写这样就可以呢:if(n&flag)            count++;        flag=flag<<1;    }    return count;}


[解决办法]
如果非要改写,那么从逻辑上来说也是if((n & flag) == flag)这样才对。
[解决办法]
探讨
if((n&amp;flag) ==1)
if(n&amp;flag)

两者的差别很明显

前者 n&amp;flag 只能是 1,才成立
后者 n&amp;flag 可以是1,2,3……,都成立,都是true

[解决办法]
探讨

引用:
引用:
if((n&amp;amp;amp;flag) ==1)
if(n&amp;amp;amp;flag)

两者的差别很明显

前者 n&amp;amp;amp;flag 只能是 1,才成立
后者 n&amp;amp;amp;flag 可以是1,2,3……,都成立,都是true

楼主这样取的是二进制的位的数,只能是1和0,所以……

[解决办法]
探讨

引用:
if((n&amp;amp;flag) ==1)
if(n&amp;amp;flag)

两者的差别很明显

前者 n&amp;amp;flag 只能是 1,才成立
后者 n&amp;amp;flag 可以是1,2,3……,都成立,都是true

楼主这样取的是二进制的位的数,只能是1和0,所以if((n&amp;flag)==1) 和if(n&amp……