C语言实现函数返回参数二进制中 1 的个数

举个例子:返回十进制255或者15转换成二进制后1的个数。

#include<stdio.h>
int count_one_bits1(unsigned int value){   //方法1:让value不断右移i位再和1 与(&)       若结果为1则说明此位置为1                                                                                 
	int num = 0;
	for (int i = 0; i < 32; i++){
		if ((value >> i) & 1 == 1){
			num++;
		}
	}
	return num;
}
int count_one_bits2(unsigned int value){  //方法2:让1不断左移i位再和value与(&)
若结果非0则说明此位置位为1
	int num = 0;
	for (int i = 0; i < 32; i++){
		if (value & (1 << i) ){  
			num++;
		}
	}
	return num;
}
int count_one_bits3(unsigned int value){  //方法3:让value值不断和(value-1)去与(&)  并且把值赋给value,直到value = 0结束 循环的次数就是1的个数
	int num = 0;
	while (value){
		value = value&(value - 1);
		++num;
	}
	return num;
}
int main(){
	int input;
	scanf("%d", &input);
	printf("%d\n", count_one_bits1(input));
	printf("%d\n", count_one_bits2(input));
	printf("%d\n", count_one_bits3(input));
	return 0;
}

输出结果如下:
在这里插入图片描述
在这里插入图片描述

发布了27 篇原创文章 · 获赞 10 · 访问量 689

猜你喜欢

转载自blog.csdn.net/m1059247324/article/details/102760851