统计二进制中1的个数

首先我们先给定一个数n=13,那么它的二进制数就是1011;故其二进制数中1的个数3,我们先编写一个代码来进行实现。

#include<stdio.h>
#define_CRT_SECURE_NO_WARNINGS 0
int sc(int n){int i=0;
int a=0;
for(i=0;i<31;i++){
if((n>>i)&1)==0)
a++}
return a;}



int main(){int n=0;
scanf("%d",&n);
int c=sc(n);
printf("count=%d",c);
return 0;}

这里运用到了“&”与“>>”操作符,其中主要是通过右移操作符来使一个数的二进制位进行移动,在与1进行“按位与”操作,这是其中一种方法,现在我们运用一种更简洁,速度更快的代码。

include<stdio.h>
#define_CRT_SECURE__NO_WARNINGS 0
int main(){
int n=0;
int count=0;
scanf("%d",&n);
while(n){
n=n&(n-1);
count++;}
printf("count=%d",count);
return 0;}

这个代码只用了按位与“&”,通过其性质来进行运算,可以自己运算一下,更加便于理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值