C语言中经典算法题目之一输入一个十进制数转换二进制有多少个1

C语言中经典算法题目之一输入一个十进制数转换二进制有多少个1

  1. 思路:
    当我们使用%去一个一个进行循环的时候,我们不一定可以得到最好的结果,比如当我们输入一个负数时,输出结果会显示不准确,所以这里用到我们的一个规律我们使用while循环的时候,使用 n=n&(n-1),下面有具体的介绍。
#include<stdio.h>
#define   count_one_jk(int n)                 //定义一个函数,方便我们下面的使用
{              int count=0;
               while(n)                                 
                 {
                           count++;
                           n=n&(n-1);              //可以带几个二进制数进去自行检验
                  }return count;
}
int main()
{
          int num;
          int ret;
          scanf("%d",&num);
          ret = count_one_jk(num);           //输入的数字再函数里面自行运算,得到我们1的个数
          printf("%d",red);

return 0;
}

结果:
输入15
输出4
输入-1
输出32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值