C语言题目---两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
Posted 4nc414g0n
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言题目---两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同相关的知识,希望对你有一定的参考价值。
主函数
int main()
{
int m=0;
int n=0;
int count =0;
scanf("%d %d",&m,&n);
int ret =m^n; //按二进制异或相同为0 相异为1,再存到ret中
count = NumberOf1(ret);
printf("%d",count);
}
判断ret中1的个数
#include <stdio.h>
int NumberOf1(int n)//判断ret二进制1的个数
{
int count=0;
while(n)
{
n=n&(n-1);
count++;
}
return count;
}
//解释:n=n&(n-1);
//当n=15 二进制 1111 n
//n-1=14 二进制 1110 n-1 =>n&(n-1)赋值为n
//n=14 二进制 1110
//n-1=13 二进制 1101 n-1 =>n&(n-1)赋值为n
//反复操作同时count++;以此计数
以上是关于C语言题目---两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同的主要内容,如果未能解决你的问题,请参考以下文章
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n