测试数字的二进制中的1有几位
方法一:通过不断求余来实现
int num = 0;
int count = 0;
scanf("%d", &num);
while (num) {
if (num % 2 == 1) {
count++;
}
num = num / 2;
}
方法一在输入的数字是负数的时候不可用。。
方法二:通过右移来实现
for (int i = 0; i < 32; ++i) {
if (1 == ((num >> i) & 1)) {
printf("num>>i=%d\n", num>>i);
count++;
}
}
数字无论正负该方法均可使用,由于int类型有4个字节,即32位,所以for循环的时候要进行32次判断。。