目录

1.方法一:

由十进制和二进制的转换可知,当该数字模上2的结果为1时,其二进制就显示一个1,依据此特点,判断二进制位上是否为1,计算出个数。

结果显示:

2.方法二:

任何数字与1进行按位与操作,只有其个位为1时得到结果才会为真,利用这一点

将这个数字的二进制与0x01进行按位与,然后将其二进制右移一位重复此操作,得到最终结果。

结果显示:

3.方法三:

一个数字与上这个数字减一的数,该数二进制最右边的1必然会消除掉,以此类推,从右往左,每一次进行按位与操作,都会取消掉一个1,直到该数字变为0,跳出循环,就得到了该数字二进制中1的个数。


1.方法一:

由十进制和二进制的转换可知,当该数字模上2的结果为1时,其二进制就显示一个1,依据此特点,判断二进制位上是否为1,计算出个数。

#include <stdio.h>int main()
{//0001 0010int num = 20, count = 0;while (num){if (num % 2 == 1)count++;num /= 2;}printf("%d\n", count);
}

结果显示:

2.方法二:

任何数字与1进行按位与操作,只有其个位为1时得到结果才会为真,利用这一点

将这个数字的二进制与0x01进行按位与,然后将其二进制右移一位重复此操作,得到最终结果。

#include <stdio.h>int main()
{//0001 0011int num = 21, count = 0;while (num){if ((num & 1) == 1)count++;num = num >> 1;}printf("%d\n", count);
}

结果显示:

3.方法三:

一个数字与上这个数字减一的数,该数二进制最右边的1必然会消除掉,以此类推,从右往左,每一次进行按位与操作,都会取消掉一个1,直到该数字变为0,跳出循环,就得到了该数字二进制中1的个数。

以21(0001 0011)为例:

//0001 0011
    //0001 0010
    //0001 0010 第一次与的结果
    //0001 0001
    //0001 0000 第二次与的结果
    //0000 1111
    //0000 0000 第三次与的结果,跳出循环,count = 3;

#include <stdio.h>int main()
{int num = 21, count = 0;while (num){num = num & (num - 1);count++;}printf("%d\n", count);
}

计算一个数的二进制中一的个数(三种方法)相关推荐

  1. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  2. centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法

    Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...

  3. mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  4. 在JavaScript中重复字符串的三种方法

    In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...

  5. 在JavaScript中反转字符串的三种方法

    This article is based on Free Code Camp Basic Algorithm Scripting "Reverse a String" 本文基于F ...

  6. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...

  7. java 终止方法_Java中终止线程的三种方法

    Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...

  8. android全局计时_Android中使用定时器的三种方法

    本文实例为大家分享了Android中使用定时器的三种方法,供大家参考,具体内容如下 图示: 因为都比较简单,所以就直接贴代码(虑去再次点击停止的操作),有个全局的Handler负责接收消息更新UI 第 ...

  9. 【在PowerPoint中插入视频的三种方法】

    为了能更好地帮助大家合理地在PowerPoint课件中插入和播放视频文件, 在PowerPoint中插入视频的三种方法 ,本文特向大家介绍PowerPoint中插入和处理视频的三种方法. 直接播放视频 ...

  10. LaTeX 中处理参考文献的三种方法总结

    LaTeX 中处理参考文献的三种方法总结 方法一:用BibLaTeX处理 分成如下四步: 第一步:制作生成bib文件: 第二步:在导言区需要加入biblatex宏包: \usepackage[格式控制 ...

最新文章

  1. 微服务架构设计模式读书笔记
  2. python 变量转字符串_[Python Basic] 字符串处理以及类型转换 2
  3. 关于 SAP Spartacus feature library 里的 _index.scss 文件,和神奇的下划线省略行为
  4. Mysql 的一些基本用法
  5. 性能优化篇(5):css 内部 or 外部,该如何选择?
  6. html typora 图片_Typora优化-适合不懂CSS代码的小白
  7. JavaScript、Ajax、jQuery全部知识点,5分钟速懂!
  8. 《深入理解Java虚拟机》读书总结
  9. Android UI学习之TextView
  10. redis的主从复制和高可用集群
  11. 成为java高级工程师需要什么
  12. Caffe 的深度学习训练全过程
  13. mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
  14. 牛客竞赛语法入门班选择结构习题C++版本参考代码及部分解析
  15. linux系统开机自动锁定键盘,设置linux开机启动小键盘的详细教程设置linux开机启动小键盘的图文教程...
  16. OSG KML文件解析
  17. GitHub使用gitBash配置用户名和邮箱和远程操作二
  18. 【附源码】计算机毕业设计java医院人事管理系统设计与实现
  19. 淘宝服务器哪个运营商速度快,三大运营商,谁的宽带网速最快?
  20. jlinkV8指示灯不亮 usb无法识别的问题

热门文章

  1. luci编程 openwrt_openWRT之Luci简介
  2. 【Leetcode】780. Reaching Points
  3. D3入门教程——坐标轴
  4. ctf镜子里面的世界_一个小编姐姐的CTF入坑之旅
  5. 无卷积结构(那就纯ransformer)的参考图像分割:ReSTR: Convolution-free Referring Image Segmentation Using Transformers
  6. ssm后台权限管理系统
  7. Pr 入门教程:如何调整音频轨道音量?
  8. MySQL 子查询之 单行子查询及多行子查询
  9. ADB Interface驱动安装[Android Studio开发]
  10. php post 漏洞_帝国CMS(EmpireCMS)v7.5漏洞分析 - LEOGG