(c语言)求一个二进制数1的个数
2015-04-20 22:37
204 查看
问题描述:
输入一个整型数a,计算这个数中在二进制存储方式下1的个数。
程序分析:
1.输入的整型数a在计算机中是以二进制的形式存储,我们采用的方法是逐位判断。
2.当这个数a大于0时,将该数和1相与(按位与),如果相与的结果为1,说明当前为1,将事先定义好的用来计数的count加1,在将该数右移一位,按同样的方式判断。输出count的值。
代码如下:
输入一个整型数a,计算这个数中在二进制存储方式下1的个数。
程序分析:
1.输入的整型数a在计算机中是以二进制的形式存储,我们采用的方法是逐位判断。
2.当这个数a大于0时,将该数和1相与(按位与),如果相与的结果为1,说明当前为1,将事先定义好的用来计数的count加1,在将该数右移一位,按同样的方式判断。输出count的值。
代码如下:
/*********************计算一个二进制数中0的个数*******************/ #include<stdio.h> void count_one(int a) //定义一个count_one函数 { int count = 0;//定义一个count用来记录1的个数,并初始化为0 while(a > 0) //判断当a>0时才进入下面的循环 { if((a & 1) == 1 ) //用按位与来判断二进制的最低位是否为1 { ++count; //如果是,加1 } a = a>>1; //将a右移一位,以便判断二进制位的前一位 } printf("%d\n",count); } int main() { int flag = 1; int b; while(flag) { printf("please input an intger number:\n"); scanf("%d",&b); count_one(b);//调用count_1函数,并把结果输出 printf("continue:1 break: 0\n"); scanf("%d",&flag); } return 0; }
相关文章推荐
- C语言之输出一个数的每一位,和获取一个二进制数所有奇数和偶数位,输出二进制序列的区别。
- 链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 用C语言编写 用以存放输入的二进制数 建立 一个带头结点的线性链表
- C语言,进制转换(输入一个字节内的数(0~255),然后将该数的转换为二进制数,然后将高四位和低四位互换)
- C语言-进制转换-输入一个字节的整数(0~255),然后将该数的转换为二进制数,然后将奇数位和偶数位互换
- 用c语言实现输入一个十进制数,计算其转换为二进制数后其中包含1的个数
- 给定一个二进制数,要求循环移位,在原二进制数中操作(C语言)
- C语言 两种方法求一个十进制无符号数的二进制数中1的个数
- C语言——带小数点的二进制数转换为十进制数
- 一个C语言宏定义错误
- 用c语言实现 一个球从100米高的自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求第 10次落地时,共经过多少米,第10次反弹多高。
- C语言 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 10月25日 c语言 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
- c语言:输入一个小于1000的正数,输出它的平方根,若不是小于1000的正数,重新输入
- [置顶] 【C语言】 求一个数的二进制反转后的值
- 俺使用的C语言面向对象范式(前言与第一节:一个简单类的封装)
- C语言的一个fun,来看看吧~
- 用C语言打印一个菱形
- 【c语言】写一个函数返回参数值为1的个数(优化)
- 【C语言】要求找出具有下列性质的数的个数(包含输入的自然数n): 先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理:
- C语言的一个关键字——static