//求两个数中不同的位的个数
#include <stdio.h>
int count_different(int a, int b)
{
int count = 0;
int c = a^b; //a,b中不同的位即为1
while (c)
{
count++;
c = c&(c - 1); //把c中最后一个1去掉
}
return count;
}
int main()
{
printf("%d\n", count_different(3,8)); //3
printf("%d\n", count_different(0, 6)); //2
printf("%d\n", count_different(-1,1)); //31
return 0;
}
相关文章
- 03-10基于C++求两个数的最大公约数最小公倍数
- 03-10C语言题-2题:统计此字符串中字母、数字、空格和其它字符的个数
- 03-10C语言 | 求斐波那契数列的前30个数
- 03-10获取两个数组中不同的元素
- 03-10其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n - 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C; 若n为奇数,按顺时针方向依次摆放 A C B。 (1)按顺时针方向
- 03-10两个数二进制位不同位的个数
- 03-10R语言中提取两个数据框中完全相同的行及保留唯一行
- 03-10【C学习笔记】day2-5 求两个数的最大公约数
- 03-10C语言——(使用指针)有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
- 03-10两个数二进制中不同位的个数