求一个数的二进制形式中 1 的个数
一、问题描述 给定一个数 n,求该数转换成二进制后包含的 1 的个数。 二、代码实现 非常老也是非常经典的一个面试题,第一次面试的时候就遇到了,这里只要把 n 和 n-1 循环按位与就可以了。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <stdio.h> int main(){ int n, cnt; while(scanf("%d", &n) != EOF){ cnt = 0; while (n){ cnt ++; n = n & (n - 1); } printf("%d\n", cnt); } return 0; } |
三、变形 题目非常老,经常会被变形。例如把该过程封装成 ... 阅读更多