![](https://i-blog.csdnimg.cn/blog_migrate/d17c8111d10af21ad9ca6eaf4dcd47bc.png)
题目
解决代码及点评
/*
求一个数中,二进制表示方式中1的个数
范例算法采用分治思想,通过位操作计算二进制中1的个数
*/
#include <iostream>
using namespace std;
int counter(int n)
{
n = (n & 0x55555555) + ((n >> 1) &0x55555555);
n = (n & 0x33333333) + ((n >> 2) &0x33333333); // 计算每两位有多少个1
n = (n & 0x0f0f0f0f0f) + ((n >> 4) & 0x0f0f0f0f); // 在每两位的基础上计算每四位的1个数
n = (n & 0x00ff00ff) + ((n >> 8)) & 0x00ff00ff; // 计算总数
n = (n & 0x0000ffff) + ((n >> 16)) & 0x0000ffff; // 计算总数
return n;
}
int main()
{
cout<<counter(0xff);
system("pause");
return 0;
}
代码下载及其运行
代码下载地址:http://download.csdn.net/detail/yincheng01/6704519
解压密码:c.itcast.cn
下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:
1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”
2)在下拉框中选择相应项目,项目名和博客编号一致
3)点击“本地Windows调试器”运行
程序运行结果