首先我们先给定一个数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;}
这个代码只用了按位与“&”,通过其性质来进行运算,可以自己运算一下,更加便于理解。