您的位置:首页 > 职场人生

面试题:输入一个整数,输出该整数二进制中1的个数。

2018-03-22 11:28 232 查看
代码:C语言

//输入一个整数,输出该整数二进制中1的个数。其中负数用补码表示。
//左移运算符是用来将一个数的各二进制位全部左移若干位。相当于乘法运算,表示为"<<"
//右移运算符是用来将一个数的各二进制位全部右移若干位。相当于除法运算,表示为">>"

#include<stdio.h>
//整数与数字“1”进行与运算(&)。低位到高位循环,与运算,左进一位。
int CalOne1(int n)
{
int count=0;
while(n)
{
if((n & 1)==1)  ++count;
n=n>>1;
}
return count;
}
//将一个书减去1,在与原数做与运算,就可以把原数二进制表示中最右边的一个1变成0
//这个数的二进制中有多少个1就可以进行多少次这样的运算。
int CalOne2(int n)
{
int count=0;
while(n)
{
++count;
n=(n-1)&n;
}
return count;
}
int  main()
{
int one ;
int n;
scanf("%d",&n);
one=CalOne2(n);
printf("%d",one);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐