计算一个整数中的位是1或是0的个数的快速算法
来源:互联网 发布:网络通信面试 编辑:程序博客网 时间:2024/05/21 14:02
最近在网上找到计算一个整数中的位是1或是0的个数的快速算法, 这个算法比常规的算法快很多倍(4倍以上)。由于这个算法在搜索引擎中经常用到,可能在其它应用上也会用到, 所以贴上去与大家共享。其中的代码如下:
其中uncom_count是所指的快速算法
其中com_count 是所指的一般算法
// dd.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "Windows.h"
static inline int uncom_count(unsigned x) {
x = x - ((x >> 1) & 0x55555555);
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
x = (x + (x >> 4)) & 0x0F0F0F0F;
x = x + (x >> 8);
x = x + (x >> 16);
return x & 0x0000003F;
}
static inline int com_count(unsigned x)
{
int count=0;
int i;
for (i=0;i<32;i++)
if (x & (1<<i)) count++;
return count;
}
int main(int argc, char* argv[])
{
unsigned the_number = 15;
int count = 1000000;
unsigned start_time = GetTickCount();
for( int i = 0; i < count; i++)
{
uncom_count (the_number);
}
fprintf(stderr, "time_consumbed by uncom_count = %d ms/n", GetTickCount() - start_time);
fprintf(stderr, "bitcount = %d /n", uncom_count(the_number));
start_time = GetTickCount();
for(i = 0; i < count; i++)
{
com_count (the_number);
}
fprintf(stderr, "time_consumbed by com_count = %d ms/n", GetTickCount() - start_time);
fprintf(stderr, "bitcount = %d /n", uncom_count(the_number));
return 0;
}
- 计算一个整数中的位是1或是0的个数的快速算法
- 计算一个整数二进制表示时有多少位是为1的算法
- 计算一个整数中1的个数...
- 计算一个32位整数的二进制形式中1的个数
- 计算一个无符整数中bit位为1的个数
- 快速求一个32位无符号整数二进制中为1的个数
- 快速求一个32位无符号整数二进制中为1的个数
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- (转贴)反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 求一个整数对应的二进制中的1的个数(位操作)
- 求一个32位2进制整数中 1的个数算法
- 反转一个字节和判断32位整数二进制中1的个数等算法
- 【转】Windows Mobile下WinInet的异步使用方法
- Linux常用命令
- 如何让cygwin象类似linux多用户登录
- 学习计算机人工智能与神经网络之浅见,
- 检查SQL Server2005中的重叠索引(Detecting Overlapping Indexes in SQL Server 2005)
- 计算一个整数中的位是1或是0的个数的快速算法
- larbin使用说明
- 一个组合算法及实现
- IBM数据中心存储解决方案.存储区域网(SAN)介绍
- 网站架构收集
- .NET网站架构实例--MySpace的体系架构
- jbpm集成到myeclipse
- 清空JTable控件中的数据
- SQL Server中链接服务器将替代远程服务器