[算法很美](位运算_3)找出落单的那个数

3、请实现一个函数,输入一个整数,输出该数的二进制表示中1的个数。

例如:9的二进制为1001,输出应为2

思路:我们复习下按位&运算

  • 1&1=1
  • 1&0=0
  • 0&0=0
  • 0&1=0

我们可以看到,只有两位上全为1的时候,才会等于一,正好可以用来检测一个数中二进制的个数

我们让给定的这个数n不断右移,每次都去判断N&1是否等于1,如下图所示:

img当n=0时,循环停止

int main()
{
    int n;
    int ans = 0;
    scanf("%d", &n);
    while (n)
    {
        if ((n & 1) == 1)
            ans++;
        n = n >> 1;
    }
    printf("%d", ans);
    return 0;
}

教学视频如下所示:

本文链接:

https://nullcode.fun/101.html
1 + 2 =
快来做第一个评论的人吧~