一个函数返回参数二进制中1的个数
第一种境界
int count_one_bits(unsigned int value) { int count = 0; while (value) { if (value % 2 == 1) count++; value = value / 2; } return count; } #include<stdio.h> int main() { int ret = 0; unsigned int num = 0; printf("请输入一个数:"); scanf_s("%d",&num); ret = count_one_bits(num); printf("二进制中1的个数:%d\n",ret); system("pause"); }
第二种境界
int count_one_bits(int value) { int count = 0; int i = 32; while (i) { if (value & 1 == 1) count++; } value = value >> 1; i--; return count; } #include<stdio.h> int main() { int ret = 0; int num = 0; printf("请输入一个数:"); scanf_s("%d", &num); ret = count_one_bits(num); printf("二进制中1的个数:%d\n", ret); system("pause"); }
第三种境界
#include<stdio.h> int count_one_bits(int value) { int count = 0; while (value) { count++; value = value&(value - 1); } return count; } int main() { int ret = 0; int num = 0; printf("请输入一个数:"); scanf_s("%d", &num); ret = count_one_bits(num); printf("二进制中1的个数:%d\n", ret); system("pause"); }