确定一个整数的2进制中有几个bit"1"写法
2013-04-18 13:02
162 查看
/****************************************************************************************************** 确定一个整数的2进制中有几个bit"1"写法 注意不断右移判断最低位是1有多少个的算法是错误的, 因为根据GNU C/C++的实现来看,负数是带符号填充进行右移的,所以如果是负数,该算法会死循环。 C++可以强制转换成无符号整数再处理 下面的程序是正解。其中num &= (num - 1) 会消除num的最小位置的"1" *******************************************************************************************************/ #include <stdio.h> int calBitNum(int num) { int numOnes = 0; while (num != 0) { num &= (num - 1); numOnes++; } return numOnes; } int main() { int m=1; while(m) { printf("please input m\n"); scanf("%d",&m); printf("the number of 1 is %d\n",calBitNum(m)); } }
相关文章推荐
- C程序:确定一个整数的计算机内部表示中有几个"1"
- 确定一个整数的计算机内部表示中有几个"1"
- 给定一个十进制的整数,写下从1开始到N的所有整数,计算其中出现的所有"1"的个数
- 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。
- 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数
- 求一个二进制数中"1"的个数
- 腾讯2017年给定一个整数判断有几个质数对
- String[] a = new String[]{"1","2"},我如果想增加一个"3"到a中,如何增加?
- 1.输出一个整数的每一位。2. 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 利用有限的几个数字(0~9)求一个数A大于正整数K且是最小的那个
- 怎样判断一个整数的二进制表示有几个1(或0)
- 一个正整数分解为几个连续的正整数之和
- 【C语言】使用递归的整数输出(高位到低位)/输出一个菱形(能够确定行数)
- 编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.
- 有一个n*n的矩阵,矩阵由 "0"和"1"组成,检测矩阵中的由"1"组成的图形是一个实心的正方形,结果为true或者false
- List的排序。在一个list里面放入"1","2"..."10","11"...,"99999","100000",使用字符串大小的顺序与解析成的数字的大小进行排序
- 一个正整数如何分解为几个连续的正整数之和的形式
- python基础练习----输入一个奇数,然后判断最少几个 9 除于该数的结果为整数
- input file控件限制上传文件类型 网页上添加一个input file HTML控件: 1 <input id="File1" type="file" /> 默认是这样的,所有文件类