欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

位运算练习:将整数 A 转换为 B 需要改变多少位?

最编程 2024-07-07 15:01:18
...

思路解析:

将整数A转换为B,如果A和B在第i(0<=i<32)个位上相等,则不需要改变这个BIT位,如果在第i位上不相等,则需要改变这个BIT位。所以问题转化为了A和B有多少个BIT位不相同。联想到位运算有一个异或操作,相同为0,相异为1,所以问题转变成了计算A异或B之后这个数中1的个数。
---------------------

#include <stdio.h>

int bit_count(int number1, int number2)
{
int temp = number1 ^ number2;
int count = 0;

while (temp != 0) {
temp = temp & (temp - 1);
count++;
}
return count;
}

int main()
{
int count = 0;
int number1, number2;

printf("please input number1 : ");
scanf("%d", &number1);

printf("please input number2 : ");
scanf("%d", &number2);

count = bit_count(number1, number2);
printf("convert number1 to number2 need change %d bits\n", count);

return 0;
}

推荐阅读