求一个数二进制中1的个数
来源:互联网 发布:阿里云计算大会 编辑:程序博客网 时间:2024/06/05 10:20
/*面试题10: 二进制中1的个数题目:请实现一个函数,输入一个整数,输出该二进制表示中1的个数。 例如把9表示成二进制是1001,有两位是1,因此如果输入9,该函数输出2.*/#if 0#include<stdio.h>/*法一: 1.先判断整数二进制表示中最右边一位是不是1,接着右移一位,此时原来处于从右边数起的第二位被移到最右边了,再判断是不是1, 这样每次移动一位,直到整个整数变成0为止 2.把整数和1做位与运算看结果是不是0,如果一个整数与1做与运算的结果是1,表示该整数最右边一位是1,否则是0.*/int NumberOf1(int n) //负数也可以{int count = 0;unsigned int flag = 1; while(flag){if(n&flag) //判断n的最低位是不是1 count++; flag = flag << 1; //左移和n做与运算,去判断n的次低位是不是1}return count;}/*法二:将一个整数减去1,都是把最右边的1变成0,如果它的右边还有0的话,所有的0都变成1,而左边的所有位保持不变。将一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变化才能0, 那么一个整数的二进制表示中有多少个1,就进行多少次这样的操作。*/int NumberOf1(int n){int count = 0;while(n){++count;n = (n-1)&n;}return count;}int main(){int num ;printf("请输入一个整数:");scanf("%d",&num);int count = NumberOf1(num);printf("该数二进制表示中1的个数是:%d\n",count);}#endif
阅读全文
0 0
- 求一个数的二进制数中1的个数
- 求一个数的二进制数中1的个数
- 求一个数的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 求一个整数的二进制数中1的个数
- 求一个数的二进制中1的个数
- 求一个正整数的二进制数中1的个数
- 求一个数的二进制序列中1的个数
- C::求一个数的二进制中1的个数
- 求一个数的二进制中1的个数
- 问题:求一个数的二进制中1的个数。
- 求一个数转换为二进制中1的个数
- 求一个整数中,二进制数含有1的个数
- 求一个数二进制表示中1的个数
- 求一个数二进制中1的个数
- 求一个二进制数中1的个数
- 【比特科技】求一个数二进制中1的个数
- 求一个数二进制中1的个数
- layDate显示默认时间
- python学习之——import sys模块
- findbugs与sonar
- 大闯关数学部分过关心得
- mabatis 传的参数为list,xml文件查询时可以用foreach
- 求一个数二进制中1的个数
- EVP_PKEY 以及 RSA 的区别
- 基于完全二叉树木形成的二叉树顺序存储-数据结构(13)
- ubuntu 12.04安装配置samba
- action分页处理
- 并发容器和框架
- 如何更好的找到你需要的资料
- shiro学习笔记2——组件之身份验证
- tslib 安装教程