二进制中1的个数的多种解法解析以及完整c语言代码
来源:互联网 发布:南昌工程学院网络 编辑:程序博客网 时间:2024/04/30 17:12
题目:输入一个整数,例如9,他的二进制表示为1001,则1的个数为2,输出2即可。
方法1:可以把数字n和1做与运算,来判断n的最低位是不是1,是1则给count+1,接着把1左移一位再和n做与运算,判断倒数第二位是不是为1,反复左移并与运算,每次都能判断n的其中一位是不是为1.这个方法的循环次数等于二进制的位数,numbero1()函数
方法2:这个方法是利用把一个整数减1,再和原整数做与运算,会把该整数的最右边一个1变为0,这样的话,一个整数的二进制表示中有多少个1,就循环多少次,numberof2()函数
两种方法的代码如下:
//二进制中1的个数:位运算的使用#include<stdio.h>int numberof1(int m){ int lag=1; int count1=0; while(lag) { if(lag & m)count1++;lag = lag << 1; } return count1;}int numberof2(int m){ int count2=0; while(m) { m=(m-1)&m;count2++; } return count2;}int main(){ int m,count1=0,count2=0; scanf("%d",&m); count1=numberof1(m); printf("%4d",count1); count2=numberof2(m); printf("%4d\n",count2); return 0;}
0 0
- 二进制中1的个数的多种解法解析以及完整c语言代码
- C语言 二进制中1的个数
- 【c语言】多种方法:将十进制数转化成二进制数,计算其中1的个数
- C语言 统计整数二进制表示中1的个数
- c语言 统计整数二进制表示中1的个数
- C语言 统计整数二进制表示中1的个数
- C语言--计算二进制数中1的个数(&)
- 【C语言】统计一个数二进制中1的个数
- C语言求二进制中1的个数
- 求旋转数组的最小数字算法的解析以及完整c语言代码实现
- 最小的K个数的多种解法
- C语言中写一个函数返回参数二进制中 1 的个数
- C语言位段的应用:统计数据二进制格式中1的个数
- 【C语言】求一个数的二进制中 1 的个数
- C语言位运算应用一:求一个数的二进制表示中1的个数
- C语言求一个整数的二进制形式表示中1的个数,用函数实现
- 统计一个整数n的二进制表示中1的个数的几种解法
- 统计一个整数的二进制中1的个数的三种解法
- 关于ajax
- mysql编译安装
- 灰度共生矩阵的生成和理解
- 杭电1330
- redhat5配置本地yum
- 二进制中1的个数的多种解法解析以及完整c语言代码
- eventBus学习
- Android 广播机制
- HDU 3549 Flow Problem [网络流]
- R.java文件介绍
- virtualbox不能安装64位系统
- ASP.NET MVC中给所有的cshtml页面引用命名空间
- iOS7下隐藏statusbar
- 调整数组顺序系列问题