概述
(1)计算一个十进制数(不一定要十进制)转换为二进制后里面1的个数:
思想如下:
每次将该数与该数减一后的数值相与,从而将最右边的一位1消掉
直到该数为0
中间循环的次数即为其中1的个数
#include<stdio.h>
void main()
{
int count=0;
int input , n;
scanf("%d",&input);
n=input;
while(n)
{
++count; //1的个数
n=(n-1)&n; //每次将该数与该数减一后的数值相与,从而将最右边的一位1消掉
}
}
//直接用移位一位一位的判断。
int GetCount(unsigned int num)
{
/*在这里实现功能*/
int count=0;
while(num>0)
{
if((num&1)==1)
count++;
num=num>>1;
}
return count;
}
(2)计算一个十进制数(不一定要十进制)转换为二进制后里面0的个数(左边起第一1前面的0不计算在内):
算法思路:
先用上面的方法计算1的个数
将输入的数与1相与,并不断右移(直到遇到1的个数为上一步求得的一的个数),不断判断各位是0或者是1,统计0的个数
#include<stdio.h>
void main()
{
int count=0,count1=0 , count0 = 0;
int input =0,n;
scanf("%d",&input);
n=input;
while(n)
{
++count; //1的个数
n=(n-1)&n; //每次将该数与该数减一后的数值相与,从而将最右边的一位1消掉
}
while(input)
{
if(input&1==1)
{
count1++;
if(count1==count)
break;
}
else
count0++;
input=input>>1;
}
printf("%d",count0);
}
最后
以上就是饱满唇膏为你收集整理的计算二进制中1的个数和0的个数的全部内容,希望文章能够帮你解决计算二进制中1的个数和0的个数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复