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

#include<stdio.h>

int main()

{

int num = -1, count = 0;

while (num)

{

count++;

num = num&(num - 1);

}

printf("%d\n", count);

system("pause");

return 0;

}

用函数编写

#include<stdio.h>

int count_one_bit(num)

{

int count = 0;

while (num)

{

count++;

num = num&(num - 1);

}

return count;

}

int main()

{

int num = -1;

int ret = count_one_bit(num);

printf("%d\n", ret);

system("pause");

return 0;

}

时间: 2024-10-29 19:12:22

求一个数的二进制数中的1的个数的相关文章

统计二进制数中的1的个数(0277)

程序设计C 实验二 题目五 统计二进制数中的1的个数(0277) 整数在计算机中使用二进制的形式表示,如整数7用二进制表示为:111,其中1的个数为3. 输入一个整数:7 输出该整数用二进制表示时,其中1的个数:3 代码: #include<iostream> #include<math.h> using namespace std; int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) {

求一个数的二进制数中所含1的个数的代码实现

#include<stdio.h> int numberOf1_solution1(int n)/*将一个正数以此向右移一位,与1做与运算.直到这个数为零*/ { int count = 0; while (n) { if (n&1) count++; n=n >> 1; } return count; } int numberOf1_solution2(int n)/*将1以此向右移动以为,与一个数(正负数均可)做与运算,直到1出现上溢为止*/ { int count =

统计二进制数中的1的个数

整数在计算机中使用二进制的形式表示,如整数7用二进制表示为:111,其中1的个数为3. 输入 输入一个整数 输出 输出该整数用二进制表示时,其中1的个数 样例输入 7 样例输出 3 #include <iostream> using namespace std; int main() { int a,count = 0; cin >> a; while(a != 0) { if(a % 2 == 1) { count++; } a = a / 2; } cout <<

&lt;swustoj&gt;?id=277 统计二进制数中的1的个数

链接http://acm.swust.edu.cn/problem/277/ #include <stdio.h> int main() { int sum,num; num=0; scanf("%d",&sum); while(sum) { if(sum%2==1) { num++; } sum/=2; } printf("%d\n",num); return 0; }

[华为机试练习题]45.求某二进制数中1的个数

题目 描述: 题目标题: 求某二进制数中1的个数. 给定一个unsigned int型的正整数,求其二进制表示中"1"的个数,要求算法的执行效率尽可能地高. 详细描述: 原型: int GetCount(unsigned int num) 输入参数: num 给定的正整数 输出参数(指针指向的内存区域保证有效): 无 返回值: 返回1的个数 举例: 输入13,则对应的二进制是1101,那么1的个数为3个.则:返回3. 练习阶段: 初级 代码 /*--------------------

求二进制数中1的个数

对于一个字节(8bit)的无符号整型变量,求二进制表示中1的个数. 解法一: 除二求余法,如10100011 除以2 得01010001余1.当除二结果为1时,二进制中1的个数会减少一个,例, 01010001除以2得00101000余1  .当能整除2时,二进制中1的个数不变,例,00101000除以2得00010100. public static int getOneNumber(int num){ int onenum=0; while(num!=0){ if (num%2==1) {

求二进制数中1的个数(编程之美)

求二进制数中1的个数 继京东618店庆时买的<编程之美>这本书,翻了翻,发现里面的题还是挺有意思的,看起来我们觉得很简单的题目,解法却有很多很多种,真是一个比一个巧妙,于是,决定记录一下. 书中的题目如下 对于一个字节(8bit)的无符号数,求其二进制表示中"1"的个数,要求算法的执行效率尽可能高. 就像书中给我们说的一样,我们一般人可能想到的解决方法如下 int countOne(int n){ int count=0; while(n){ if(n%2==1){ cou

编程之美-02数字之魅-求二进制数中1的个数

题目:求二进制数中 1 的个数 对于一个字节(8bit)的无符号整型变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能地高. 解法一:移位->判断->累计 解法二:除2->判断->累计 解法三:v &= (v -1)需要掌握 ? 2 3 4 5 6 7 8 int num = 0; while(v) {     v &= (v -1);     num++; } return num; ? 2   解法四:分支操作(swicth-cas

求二进制数中1的个数——引发的问题

<编程之美>书中有这样的一道问题“求二进制数中1的个数” 题目:对于一个字节(8bit)的无符号整形变量,求其二进制中“1”的个数,要求算法的执行效率尽可能高. 我使用java语言处理:输出结果是3 public class Count { public static int Count(byte d){ int num = 0; while (d != 0) { d &= (d-1);//比较1的个数 num++; } return num; } public static void