如题:
输入一个int型数据,求解输入数据的二进制数中1的个数
#include <stdio.h>
int fun(int input) {
int count = 0;
int bit_num = sizeof(input) * 8;
for (int i = 0; i < bit_num; i++) {
if (input&0x01) {
count++;
}
input = input >> 1;
}
return count;
}
int main(int argc, char const *argv[])
{
int a = 65535;
printf("1 number = %d\n", fun(a));
return 0;
}
这样也是可以的(如果后面没1就可以直接结束了)
#include <stdio.h>
int fun(int input) {
int count = 0;
while (input) {
if (input&0x01) {
count++;
}
input = input >> 1;
}
return count;
}
int main(int argc, char const *argv[])
{
int a = 65535;
printf("1 number = %d\n", fun(a));
return 0;
}
扩展:求其中0的个数
#include <stdio.h>
int fun(int input) {
int count = 0;
int bit_num = sizeof(input) * 8;
for (int i = 0; i < bit_num; i++) {
if (input&0x01) {
count++;
}
input = input >> 1;
}
return bit_num - count;
}
int main(int argc, char const *argv[])
{
int a = 1;
printf("1 number = %d\n", fun(a));
return 0;
}
或者这样也行
#include <stdio.h>
int fun(int input) {
int count = 0;
int bit_num = sizeof(input) * 8;
for (int i = 0; i < bit_num; i++) {
if (!input&0x01) {
count++;
}
input = input >> 1;
}
return count;
}
int main(int argc, char const *argv[])
{
int a = 15;
printf("1 number = %d\n", fun(a));
return 0;
}