C++版本计算一个数字的二进制中0或1的个数原理讲解及代码实现
#include <iostream>
using namespace std
;
int GetSum(int nData
, bool bZeroOrOne
= false)
{
int nSum
= 0;
if (!bZeroOrOne
)
{
while (nData
)
{
nSum
++;
nData
&= (nData
- 1);
}
}
else
{
while (nData
+ 1)
{
nSum
++;
nData
|= (nData
+ 1);
}
}
return nSum
;
}
int main(int argc
, char* argv
[])
{
int nData
= 300;
int nSum_Zero
= GetSum(300, true);
int nSum_One
= GetSum(300, false);
printf("\n数字%d的二进制数中,0的个数为%d个,1的个数为%d个\n",nData
,nSum_Zero
,nSum_One
);
return 1;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-19737.html