求一个数的二进制位中1的个数

简介: 求一个数的二进制位中1的个数
int main()
{
  int n = 0;
  scanf("%d", &n);
  int count = 0;
  while(n)
  {
    if (n % 2 == 1)
    {
      count++;
    }
    n /= 2;
  }
    printf("%d", count);
  return 0;
}
#include<stdio.h>
int main()
{
  int n = 2;
  scanf("%d", &n);
  int t = 1;
  int count = 0;
  while(t)
  {
    if ((n & t) != 0)//n 与 1比较看该位置上是否有两个1,若n没有则会被与成0
    {
      count++;
    }
    t <<= 1;//让t不断后移测每一位数是有1
  }
  printf("%d", count);
  return 0;
}
int main()
{
  int n = 0;
  scanf("%d", &n);
  int count = 0;
  while (n)
  {
    n = n & n - 1;//n-1减去一位并与n与将会得到 除去了最后面一个1的二进制
        count++;
  }
  printf("%d", count);
  return 0;
}
相关文章
|
7月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
算法
把数组里面数值排成最小的数
把数组里面数值排成最小的数
37 1
|
1月前
|
C语言
计算一个数的 n 次方
【10月更文挑战第23天】计算一个数的 n 次方。
34 3
|
3月前
|
机器学习/深度学习 网络协议 Windows
几个数相加
几个数相加。
67 4
|
算法
求二进制位中一的个数
求二进制位中一的个数
85 0
打印0~100000之间的水仙花数, 水仙花数指一个n位数,其各位数的n次方之和正好等于该数本身
打印0~100000之间的水仙花数, 水仙花数指一个n位数,其各位数的n次方之和正好等于该数本身
116 0
求两个数二进制中不同位的个数
题目内容:两个int(32)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子: 7
输出最小的数位和等于x并且各个数位都不一样的值
输出最小的数位和等于x并且各个数位都不一样的值
47 0
求两个数的二进制数中不同位的个数
两个整数进行异或的结果是:相同位异或结果为0,不同位异或结果为1,进一步将问题转化为求这两个整数异或结果的二进制位为1的个数即所求两个数二进制数中不同位的合数。