原创:
http://blog.163.com/wupengzhi2005@126/blog/static/17101002201082971255213/
// 求二进制数中1的个数
#include
<stdio.h
>
// 方法1
int getCount1
(
unsigned
int n
)
{
int cnt
=
0;
while
(n
)
{
// 取得二进制数的最右边的位 cnt
+= n
&
0x01;
// n右移一位 n
>>=
1;
}
return cnt
;
}
// 方法2
int getCount1_
(
unsigned
int n
)
{
int cnt
=
0;
while
(n
)
{
n
&=
(n
-
1)
;
cnt
++;
}
return cnt
;
}
int main
()
{
int a
;
a
=
0x0;
printf
(
"%d %d/n"
, a
, getCount1
(a
));
a
=
0x01;
printf
(
"%d %d/n"
, a
, getCount1
(a
));
a
=
0x02;
printf
(
"%d %d/n"
, a
, getCount1
(a
));
a
=
0x03;
printf
(
"%d %d/n"
, a
, getCount1
(a
));
a
=
0xffffffff;
printf
(
"%d %d/n"
, a
, getCount1
(a
));
a
=
0x0;
printf
(
"%d %d/n"
, a
, getCount1_
(a
));
a
=
0x01;
printf
(
"%d %d/n"
, a
, getCount1_
(a
));
a
=
0x02;
printf
(
"%d %d/n"
, a
, getCount1_
(a
));
a
=
0x03;
printf
(
"%d %d/n"
, a
, getCount1_
(a
));
a
=
0xffffffff;
printf
(
"%d %d/n"
, a
, getCount1_
(a
));
return
0;
}
转载请注明原文地址: https://ibbs.8miu.com/read-2226506.html