编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
要想实现此函数,首先要获取整数二进制的每一位,在进行比较
1的二进制序列为 00000000 00000000 00000000 00000001
(m >> i) & 1
& 按位与 有0为0 两个1为1 所以和1 & 可以获得m的最后一位
》有一操作符 m二进制序列整体右移 可依次获得m的每一位
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int compare()
{
int m = 0;
int n = 0;
int i = 0;
int count = 0;
scanf("%d%d", &m, &n);
for (i = 0; i < 32; i++)
{
if (((m >> i) & 1) != ((n >> i) & 1))
{
count++;
}
}
return count;
}
int main()
{
int ret = compare();
printf("%d", ret);
system("pause");
return 0;
}
使用操作符可以实现很多功能,使编程变得简单