##计算二进制数中1的个数
写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
实现的函数为:
int count_one_bits(unsigned int value){//x为输入数字的形参
int count=0;//计数器,在此记录当value为真(即不为0)时,循环体执行的次数,也就是二进制数中,1的个数
while (value){//当x为真(即x不为0时)执行循环体
count++;
value = value&(value - 1);重点!!!
}
return count;//将count的值传回count_one_bits并赋值给num
}
整体代码为:
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value){//x为输入数字的形参
int count=0;
while (value){//当x为真(即x不为0时)执行循环体
count++;
value = value&(value - 1);
}
return count;
}
int main(){
unsigned int a = 0;
int num = 0;
printf("请输入一个数字:");
scanf_s("%d", &a);
num = count_one_bits(a);
printf("%d\n", num);
system("pause");
return 0;
}
测试:
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value){/
int count=0;
int i;
for(i=value;i;i/=2){
count+=i%2;
}
return count;
}
int main(){
unsigned int a = 0;
int num = 0;
printf("请输入一个数字:");
scanf_s("%d", &a);
num = count_one_bits(a);
printf("%d\n", num);
system("pause");
return 0;
}