华为机试在线训练-牛客网(9)求int整数在内存中1的个数
2017-01-24 15:55
309 查看
题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
输入例子:
5
输出例子:
2
数字在内存中 ,被转化为二进制。
例如7表示为0111
n&(n-1) 即(0111)&(0110)== 0110 就是 n去除了最后一个1 ;
几个1 就可以在几次内 去除几个1
因此,代码如下:
#include <iostream> #include <string> using namespace std; int main() { int n; while(cin>>n) { int count = 0; while (n != 0) { count++; n = n&(n-1); } cout<<count<<endl; } return 0; }
补:
上述方法是统计1总共的个数,如果要求连续1的个数,可以用下面方法:
#include <iostream>
using namespace std;
int main()
{
int byte;
while(cin>>byte)
{
int k=0;
for( k=0;byte!=0;k++)
{
byte=byte&(byte<<1);
}
cout<<k<<endl;
}
return 0;
}
相关文章推荐
- 华为机试在线训练-牛客网(21)整数与IP地址间的转换
- 牛客网-华为机试在线训练-1.求int型数据在内存中存储时1的个数
- 华为机试在线训练-牛客网(27)无线OSS-高精度整数加法
- 华为机试在线训练-牛客网(6)提取不重复的整数
- 华为机试在线训练–牛客网(python)第二部分
- 华为机试在线训练-牛客网(41)字符串分割
- 华为机试在线训练-牛客网(1)明明的随机数
- 华为机试在线训练-牛客网(5)合并表记录
- 华为机试在线训练-牛客网(16)字符串排序
- 华为机试在线训练-牛客网(30)查找两个字符串a,b中的最长公共子串
- 牛客网--华为机试在线训练1:字符串最后一个单词的长度
- 牛客网–华为机试在线训练6:质数因子
- 华为机试在线训练-牛客网(18)字符串合并处理
- 华为机试在线训练-牛客网(22)字符串加密
- 牛客网--华为机试在线训练10:字符个数统计
- 华为机试在线训练-牛客网(2)进制转换
- 华为机试在线训练-牛客网(11)识别有效IP地址和掩码并分类统计
- 牛客网--华为机试在线训练3:明明的随机数
- 华为机试在线训练-牛客网(38)在字符串中找出连续最长的数字串
- 牛客网-华为机试在线训练-2.取近似值