我是靠谱客的博主 饱满唇膏,最近开发中收集的这篇文章主要介绍计算二进制中1的个数和0的个数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(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的个数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部