prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 20.12

计算整数中置位(值为 1)的位数的最有效方法是什么?


像这个问题这样的许多“位操作”问题,都可以通过查找表来加速和简化(但请参见问题 20.13)。下面是一个小函数,可以一次性计算一个值的 4 位中的置位数。

static int bitcounts[] =
	{0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};

int bitcount(unsigned int u)
{
	int n = 0;

	for(; u != 0; u >>= 4)
		n += bitcounts[u & 0x0f];

	return n;
}


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管