您的位置:首页 > 其它

输入的数转化为二进制序列,并统计序列中1的个数

2015-09-28 20:58 417 查看
★输入的数转化为二进制序列,并统计序列中1的个数

描述:普通的模除取余后数直接除二的办法易于理解,但是对于输入的数只限于正数和零,对于负数则不适应,所以采用与后移位的方法以此来扩大数的输入范围。

#include<stdio.h>
int main()
{
int m,b,c,i;
int count = 0;
char a[32];
printf("请输入一个数:\n");
scanf("%d", &m);
for (i = 0; i < 32; i++)
{
if (m & 1 == 1)
{
count++;
}
c = m & 1;        //与0001相与,同1反0,取得余数,相当于模除(%)的效果
b = m >> 1;        //序列整体向右移一位,相当于(/2)的效果
m = b;
a[i] = c;
}
printf("该数的二进制序列为:\n");
for (i = 31; i >= 0; i--)
printf("%d", a[i]);
printf("\n");
printf("该序列中1的个数为:\n");
printf("count=%d", count);
printf("\n");
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息