文章
15
粉丝
142
获赞
26
访问
19.6k
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int a,res=0;
cin >> a;
while(a){
a -= (a & -a);
res ++;
}
printf("count0=%d count1=%d",(32-res),res);
return 0;
}
这段代码的功能是统计一个整数二进制中0和1的个数。
首先,用户需要输入一个整数a,然后通过while循环不断地将其转化为二进制表示下最低位的1,然后将该最低位1所处的位置变为0,并将次数记录在res里面。最后输出32减去res的值(即二进制表示下0的个数)以及res的值(即二进制表示下1的个数)。
这个算法的时间复杂度与二进制中1的个数有关,具体来说,对于一个n位的二进制数,这个算法的时间复杂度是O(k),其中k表示n中1的个数,因此这个算法非常高效。
登录后发布评论
暂无评论,来抢沙发