算法习题28:整数的二进制表示中1的个数
2013-10-22 10:19
357 查看
整数的二进制表示中1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2
-----------------------------------------------------------
这道题其实不难,就是位操作的一个考察,恰好最近在研究这个东西,所以还是比较顺手的,
我们可以一位一位去找为1的可是==只能用来判断整数或者其他数据类型,貌似不能用来判断bit位是否相等,我们这里可以用是非运算
我们只用某一位为1,其余位为0,然后 与 整数相与,得到的要么是0,要么是1,这不就可以了么??
就贴个简单的结果校验下:
其实这种位操作在大运算里还是非常好的,它可以极大降低我们的存储量,把空间使用率提高,例如在搜索,大数据方面 有着很重要的作用,我希望尽其能给出一些关于搜索方面的知识,最近刚开始学,希望能借用次博客记录每一点!
题目:输入一个整数,求该整数的二进制表达中有多少个1。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2
-----------------------------------------------------------
这道题其实不难,就是位操作的一个考察,恰好最近在研究这个东西,所以还是比较顺手的,
我们可以一位一位去找为1的可是==只能用来判断整数或者其他数据类型,貌似不能用来判断bit位是否相等,我们这里可以用是非运算
我们只用某一位为1,其余位为0,然后 与 整数相与,得到的要么是0,要么是1,这不就可以了么??
//============================================================================ // Name : CalcBitInInteger.cpp // Author : YLF // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> using namespace std; int CalcBit(int n); int main() { int input = 0; cin>>input; cout<<CalcBit(input); return 0; } int CalcBit(int n){ int i = 0; int result = 0; for(i=0;i<32;i++){ if(n & (1<<i)) result++; } return result; }
就贴个简单的结果校验下:
65535 16
65536 1
其实这种位操作在大运算里还是非常好的,它可以极大降低我们的存储量,把空间使用率提高,例如在搜索,大数据方面 有着很重要的作用,我希望尽其能给出一些关于搜索方面的知识,最近刚开始学,希望能借用次博客记录每一点!
相关文章推荐
- 微软算法100题28 整数的二进制表示中1 的个数
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 快速计算整数的二进制表示法中1的个数(编程珠玑9章课后习题7)
- IT公司100题-28-整数的二进制表示中1的个数
- 28.整数的二进制表示中1的个数
- 28、整数的二进制表示中1的个数
- 每天一道算法题16 整数的二进制表示中1的个数
- 微软100题(28)整数的二进制表示中1的个数
- 100-28- 整数的二进制表示中1的个数
- 整数的二进制表示中1的个数(28)
- C++ 算法之 输入两个整数m n,求计算需要改变m的二进制表示中的多少位才能得到n
- 几种统计整数二进制表示中1的个数(算法小学习)
- 计算一个整数的二进制表示有多少个1(别人的最快算法)
- 求整数二进制表示中1的个数,三种算法
- 算法题1 整数的二进制表示中1的个数
- 28.整数的二进制表示中1 的个数
- 算法--微软面试:整数的二进制表示中1的个数(Java实现)
- 程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]
- 算法学习十----整数的二进制表示中1的个数
- 整数二进制表示中1的个数[算法]