求两个整数二进制中不同位的个数:
这里我们采用异或的思想,
假设m为8其二进制为: 1000
假设n为10其二进制为:1010
则异或之后为:0010
那我们只需要求异或之后的整数中1的个数即可:
如果对求一个整数二进制中1的个数不理解的可以看:求一个整数二进制表示中1的个数
#include <stdio.h>
int git_diff_count(int m,int n)
{
int count=0;
int num=m^n;
while(num)
{
num=num&(num-1);
count++;
}
return count;
}
int main()
{
int m=0,n=0;
printf("请输入两个整数>:");
scanf("%d %d",&m,&n);
int count=git_diff_count(m,n);
printf("count = %d \n",count);
return 0;
}
打印一个整数的二进制中奇数位和偶数位
和上一篇文章中的思路相同,我们一位一位去求解
#include <stdio.h>
void print_diff_bit(int n)
{
int i=0;
for(i=30;i>=0;i-=2)
{
printf("%d ",((n>>i)&1));
}
printf("\n");
for(i=31;i>0;i-=2)
{
printf("%d ",((n>>i)&1));
}
printf("\n");
}
int main()
{
int input=0;
printf("请输入一个整数>:");
scanf("%d",&input);
print_diff_bit(input);
return 0;
}