// HowMany1s.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//求一个整形中1 的位数。
int f( int x)
{
int n = 0 ;
while (x) {
++ n;
x &= x - 1 ;
}
return n;
}
int myfun( int x)
{
int n = 0 ;
int xold,xnew;
while (x)
{
xold=x;
xnew=x>>1;
if(xold-(xnew<<1))
++n;
x= xnew;
}
return n;
}
int main(int argc, char* argv[])
{
int n=5;
printf("%d:%d %d\n",n,f(n),myfun(n));
n=0;
printf("%d:%d %d\n",n,f(n),myfun(n));
n=-1;
//printf("%d:%d %d\n",n,f(n),myfun(n));
printf("%d:%d\n",n,f(n));
//printf("%d:%d\n",n,myfun(n));//不支持负数
n=2;
printf("%d:%d %d\n",n,f(n),myfun(n));
n=7;
printf("%d:%d %d\n",n,f(n),myfun(n));
return 0;
}
求一个整形中1 的位数。
最新推荐文章于 2020-11-17 16:36:06 发布