方案一:(只适合计算正数)

#include<stdio.h>

#include<stdlib.h>

int main()

{

int num = 10;  //10的二进制数为1010

int count = 0;

while (num)

{

if (num % 2 == 1)    //从最高位开始除,余数为1则为1,余数为2则为0

{

count++;     //余数为1时计数加1

}

num = num / 2;      //除以2相当于右移一位,即丢掉计数过的

}

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

system("pause");

return 0;

}

方案二:(正负数皆可)

#include<stdio.h>

#include<stdlib.h>

int main()

{

int num = 10;

int count = 0;

while (num)

{

if ((num&1) == 1)  //&按位与:有0则0,双1则1。即从最高位开始每位数字按位与1

{

count++;

}

num = num >> 1;  //相当于除以2

}

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

system("pause");

return 0;

}

方案三:(正负数皆可)

#include<stdio.h>

#include<stdlib.h>

int main()

{

unsigned int num = -1;  //-1的二进制数为11111111 11111111 11111111 11111111

int count = 0;

while (num)

{

if ((num&1) == 1)

{

count++;

}

num = num >> 1;

}

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

system("pause");

return 0;

}

方案四:(正负数皆可)

#include<stdio.h>

#include<stdlib.h>

int main()

{

int num = -1;

int count = 0;

while (num)

{

count++;

num = num&(num - 1);

}

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

system("pause");

return 0;

}

结果:

num=10             //10的二进制数为1010

num=-1              //-1的二进制数为11111111 11111111 11111111 11111111

转载于:https://blog.51cto.com/10921020/1737138

统计二进制中1的个数(四种方案)相关推荐

  1. php统计变量的位数,php实现统计二进制中1的个数算法示例

    本文实例讲述了php实现统计二进制中1的个数算法.分享给大家供大家参考,具体如下: 问题 输入一个十进制整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解决思路 这是个位运算的题目. 解法一 ...

  2. #1-1 统计二进制中1的个数

    统计二进制中1的个数 前言 输入 输出 样例输入 样例输出 源代码 关于这题 前言 程序小白-萧白 今天开始努力学习!!! 输入 输出 样例输入 样例输出 源代码 #include <stdio ...

  3. (转)快速统计二进制中1的个数

    大牛博客插眼:https://blog.csdn.net/u013243347/article/details/52220551 证明在大牛的博客里,直接挂代码吧: 时间复杂度从logn下降到了O(二 ...

  4. 【剑指offer15.二进制中1的个数】——位操作(左移右移等)

    目录 二进制的表示 二进制的位操作 应用: 剑指offer15.统计二进制中1的个数(多种方法,位右移操作.与操作等) 转自:https://www.jianshu.com/p/3a31065a8e5 ...

  5. 每列大于0的个数_二进制中1的个数(剑指offer第十四天)

    二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输 ...

  6. 第2章 数字之魅——求二进制中1的个数

    求二进制中1的个数 问题描述 对于一个字节(8bit)的变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能地高. [解法一] 可以举一个八位的二进制例子来进行分析.对于二 ...

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

    行文脉络 解法一--除法 解法二--移位 解法三--高效移位 解法四--查表 扩展问题--异或后转化为该问题 对于一个字节(8bit)的变量,求其二进制"1"的个数.例如6(二进制 ...

  8. 剑指offer:面试题15. 二进制中1的个数

    题目:二进制中1的个数 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输 ...

  9. 剑指Offer #11 二进制中1的个数(想不到的骚操作)

    题目来源:牛客网-剑指Offer专题 题目地址:二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目解析 对于这种涉及位运算的题目,我们首先要了解基本的位 ...

最新文章

  1. 【转】vfork 和 fork的区别
  2. 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》
  3. Hollowjars,部署扫描程序以及Wildfly群体为何很棒
  4. 2014年ENVI/IDL遥感应用与开发培训班-11月重庆站 開始报名了
  5. 清华大学 现代软件工程 - 实战经验分享
  6. oracle sum函数返回类型,Oracle / PLSQL SUM函数
  7. 融会贯通——最常用的面向对象设计原则“合成复用原则”
  8. celebs名人写真图片数据采集,先下载100个G再说
  9. java biginteger string_String到BigInteger java
  10. rds支持mysql自带函数吗_MySQL自定义函数(CREATE FUNCTION)
  11. 慕课网 机器学习任务 笔记
  12. 计算机组成原理微指令cpth,计算机组成原理(西安理工大学)实验二 CPTH模型机综合实验——微控制器实验.doc...
  13. 玻纤效应差分信号影响及处理方法,使用sigrity建模玻纤效应仿真
  14. FITC-PEG-Pyrene,荧光素聚乙二醇芘丁酸,Pyrene-PEG-Fluorescent
  15. Java 删除session实现退出登录
  16. Ant design vue pro 添加多页签
  17. 线性回归使用的基本条件
  18. 2021高考热度最高专业,大数据分析告诉你
  19. Python函数参数之*与**用法详解
  20. 8、Horizon 事件数据库安装配置

热门文章

  1. 开课吧:Web前端开发三大框架的特点
  2. WM5/6常见进程列表
  3. Odoo 强大的开源微信模块 oejia_wx
  4. [20171113]修改表结构删除列相关问题2.txt
  5. lambda,reserve list, list comprehension, string of slice
  6. 实战MEF(4):搜索范围
  7. Vim GDB 调试器编译配置说明
  8. mac上c++11的编译问题
  9. Matlab图形修饰之视点处理
  10. C#调用exe工作目录