写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:int count_one_bits(unsigned int value)
{
返回 1的位数
}
方法一:原始余2再除2
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int count_one_bits(unsigned int value) { int count = 0; while (value) { if (value % 2 == 1) { count++; } value = value / 2; } return count; }
方法2:右移一位与1操作
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;方法三:关注数据再内存存储方式:
int count_one_bits(int value) { int count = 0; while (value) { count++; value = value&(value - 1); } return count; }主函数:
int main() { int num = 0; int ret = 0; scanf("%d", &num); ret = count_one_bits(num); printf("count=%d\n", ret); system("pause"); return 0; }