
题目
解决代码及点评
/* 求一个数中,二进制表示方式中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调试器”运行
程序运行结果