计算一个数的二进制中一的个数(三种方法)
目录
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);
}
计算一个数的二进制中一的个数(三种方法)相关推荐
- mysql添加临时索引_mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法
Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...
- mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- 在JavaScript中重复字符串的三种方法
In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...
- 在JavaScript中反转字符串的三种方法
This article is based on Free Code Camp Basic Algorithm Scripting "Reverse a String" 本文基于F ...
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...
- java 终止方法_Java中终止线程的三种方法
Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...
- android全局计时_Android中使用定时器的三种方法
本文实例为大家分享了Android中使用定时器的三种方法,供大家参考,具体内容如下 图示: 因为都比较简单,所以就直接贴代码(虑去再次点击停止的操作),有个全局的Handler负责接收消息更新UI 第 ...
- 【在PowerPoint中插入视频的三种方法】
为了能更好地帮助大家合理地在PowerPoint课件中插入和播放视频文件, 在PowerPoint中插入视频的三种方法 ,本文特向大家介绍PowerPoint中插入和处理视频的三种方法. 直接播放视频 ...
- LaTeX 中处理参考文献的三种方法总结
LaTeX 中处理参考文献的三种方法总结 方法一:用BibLaTeX处理 分成如下四步: 第一步:制作生成bib文件: 第二步:在导言区需要加入biblatex宏包: \usepackage[格式控制 ...
最新文章
- 微服务架构设计模式读书笔记
- python 变量转字符串_[Python Basic] 字符串处理以及类型转换 2
- 关于 SAP Spartacus feature library 里的 _index.scss 文件,和神奇的下划线省略行为
- Mysql 的一些基本用法
- 性能优化篇(5):css 内部 or 外部,该如何选择?
- html typora 图片_Typora优化-适合不懂CSS代码的小白
- JavaScript、Ajax、jQuery全部知识点,5分钟速懂!
- 《深入理解Java虚拟机》读书总结
- Android UI学习之TextView
- redis的主从复制和高可用集群
- 成为java高级工程师需要什么
- Caffe 的深度学习训练全过程
- mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
- 牛客竞赛语法入门班选择结构习题C++版本参考代码及部分解析
- linux系统开机自动锁定键盘,设置linux开机启动小键盘的详细教程设置linux开机启动小键盘的图文教程...
- OSG KML文件解析
- GitHub使用gitBash配置用户名和邮箱和远程操作二
- 【附源码】计算机毕业设计java医院人事管理系统设计与实现
- 淘宝服务器哪个运营商速度快,三大运营商,谁的宽带网速最快?
- jlinkV8指示灯不亮 usb无法识别的问题
热门文章
- luci编程 openwrt_openWRT之Luci简介
- 【Leetcode】780. Reaching Points
- D3入门教程——坐标轴
- ctf镜子里面的世界_一个小编姐姐的CTF入坑之旅
- 无卷积结构(那就纯ransformer)的参考图像分割:ReSTR: Convolution-free Referring Image Segmentation Using Transformers
- ssm后台权限管理系统
- Pr 入门教程:如何调整音频轨道音量?
- MySQL 子查询之 单行子查询及多行子查询
- ADB Interface驱动安装[Android Studio开发]
- php post 漏洞_帝国CMS(EmpireCMS)v7.5漏洞分析 - LEOGG