题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
利用位运算~第二种思路很赞....
#include<iostream>
using
namespace
std;
int
count_one_1(
int
num){
int
cnt=0;
//unsigned int i=1;
int
i=1;
while
(i){
if
(num&i) cnt++;
i=i<<1;
}
return
cnt;
}
int
count_one_2(
int
num){
//很赞的方法
int
cnt=0;
while
(num){
num=num&(num-1);
//101 & 100 = 100; 100 & 011=0;
cnt++;
}
return
cnt;
}
int
main(
void
){
int
num;
while
(cin>>num){
cout<<
"solution1:"
<<count_one_1(num)<<endl;
cout<<
"solution2:"
<<count_one_2(num)<<endl;
}
system
(
"pause"
);
return
0;
}
int countOf1(int n) {
|
本文介绍两种高效算法来计算一个整数在二进制表示中1的个数。第一种方法通过逐位检查,而第二种方法采用位运算技巧,每次迭代消除最低位的1,直至整数变为0。

被折叠的 条评论
为什么被折叠?



