再学一道算法题:无聊的小明来数1 --按位与

简介: 小明这几天非常无聊,于是乎他又给自己找了一个乐子,他随手写一个十进制的数字,然后转换成二进制,数一数二进制中有几个1,请编写程序完成这个过程,注意看看输入、输出格式。

这道题是数十进制转二进制后有几个1,这边提供两种方法,一种是十进制除二判断奇偶累计1的个数(借用兄嘚的代码),一种是按位与的写法(俺最近学的哈哈哈)。

下面是原题:

小明这几天非常无聊,于是乎他又给自己找了一个乐子,他随手写一个十进制的数字,然后转换成二进制,数一数二进制中有几个1,请编写程序完成这个过程,注意看看输入、输出格式。

82110045c2b0498c84b246f2b8714948.png

方法一:除二判断奇偶累加兄弟的c++代码

#include<cmath>
using namespace std;
typedef long long ll;
 
int main()
{
    int t,n;
    cin>>t;
     
    while(t--)
    {
        int cnt=0;
        cin>>n;
        while(n/2)
        {
            if(n%2==1)
            cnt++;
            n=n/2;
        }
          if(n%2==1)
          cnt++;
          cout<<cnt<<endl;
     }
    return 0;  
}

方法二:按位与我的C语言代码

int main()
{
    int a,b,i,j,n,count=0;
    scanf("%d",&n); 
    while(n--)
    {
        count=0;
        scanf("%d",&a);
 
      while(a)
      {
           a=a&(a-1);
           count++;
      }
     printf("%d\n",count);
    }
    return 0;
}
/*核心代码语句:(a=a&(a-1)): 让这个数n与n-1按位与再赋给n,它的意义是,从低位到高位,n的二进制位中第一次出现1的位置变成0(循环),直到n的二进制位上的1全变成0(此时n=0),循环终止。*/
相关文章
再学一道算法题: 九宫格输入法
再学一道算法题: 九宫格输入法
|
存储 算法
再学一道算法题:PAT排名汇总 (排序+存储)
再学一道算法题:PAT排名汇总 (排序+存储)
再学一道算法题: 寻找大富翁
再学一道算法题: 寻找大富翁
|
存储 算法
再学一道算法题: 最长连续递增子序列
再学一道算法题: 最长连续递增子序列
再学一道算法题: 朋友(map)
再学一道算法题: 朋友(map)
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 最大子列和问题
再学一道算法题: 最大子列和问题
再学一道算法题: 最大子列和问题
再学一道算法题: 二分法求多项式单根
再学一道算法题: 二分法求多项式单根
再学一道算法题: 二分法求多项式单根
再学一道算法题: 食物链(带权并查集)
再学一道算法题: 食物链(带权并查集)
再学一道算法题: 食物链(带权并查集)
|
人工智能 监控 算法
再学一道算法题:监控
再学一道算法题:监控