题目描述:
写一个函数返回参数二进制中 1 的个数。
比如: 15 0000 1111 4 个 1
第一种 (按照进制转换方法):
#include<stdio.h>
int main() {
int n;
scanf("%d", &n);
int count = 0;
while (n) {
if (n % 2 == 1) {
count++;
}
n /= 2;
}
printf("有%d个1", count);
return 0;
}
第二种(逻辑运算符按位与)
例如:n=13时,对应的二进制数为00000000 00000000 00000000 00001101
该二进制数每次向右移动一位和00000000 00000000 00000000 00000001 (1)相与是否为1来判断该位是否为1。
#include<stdio.h>
int main() {
int n;
scanf("%d", &n);
int count = 0;
int i = 0;
for (i = 0; i < 32; i++) {
if (((n >> i) & 1) == 1) {
count++;
}
}
printf("有%d个1", count);
return 0;
}