#include<iostream>usingnamespace std;intcountFunction(int x){int result =0;while(x){if(x %2==1){
result++;}
x /=2;}return result;}intmain(){int x =196;int result =countFunction(x);
cout << x <<"的二进制数中1的个数为"<< result << endl;return0;}
测试结果:
法二:对该数不断右移1位后看与1的结果是否为1,并计算与1的结果为1的次数
#include<iostream>usingnamespace std;intcountFunction(int x){int result =0;while(x){if(x &1) result++;
x >>=1;}return result;}intmain(){int x =197;int result =countFunction(x);
cout << x <<"的二进制数中1的个数为"<< result << endl;return0;}
测试结果:
法三:对该数与该数前一个数进行相与运算,计算相与后不为0的次数
#include<iostream>usingnamespace std;intcountFunction(int x){int result =0;while(x){
x &(x -1);
result++;}return result;}intmain(){int x =206;int result =countFunction(x);
cout << x <<"的二进制数中1的个数为"<< result << endl;return0;}
求一个8位无符号二进制数中1的个数法一:对该数不断除以2后看其余数是否为1,并计算余数为1的次数#include<iostream>using namespace std;int countFunction(int x) { int result = 0; while (x) { if (x % 2 == 1) { result++; } x /= 2; } return result;}int main(){ int x = 196; int r