Hellow,我是jack,今天给大家分享的是C语言实现求俩个数的二进制不同位的个数。话不多说,让我们直接进入正题。
首先,我们应该想到要求俩个不同数的二进制位的不同个数,我们就需要通过或运算符进行实现。
例如:9和10异或 9的二进制为1001 10的二进制为1010 进行异或后为 0011 将其转化为十进制为3.
ret = m ^ n;
所以现在ret的值为3,接下来我们就有俩种方法进行实现功能。
1.
int count = 0;
while (ret)
{
ret = ret / 2;
count++;
}
2.
int Num(int n) { int counts = 0;//设置一个值来计数 for (int i = 0; i < 32; i++) { if ((n >> i) & 1 == 1) { counts++; } } return counts; }
这里给出的俩种方案想法是一样的,就是实现的手段不同。
最后。让我们把代码不充完整。
//求俩个数的二进制不同位的个数
int Num(int n)
{
int counts = 0;//设置一个值来计数
for (int i = 0; i < 32; i++)
{
if ((n >> i) & 1 ==