白丁 发表于 2015-4-20 22:33
你算算呢,你需要移四次位,至少做三次与,关键是你的查表,你要遍历你的表,这个指令不少啊,遍历四次表,还要做加法,想想多得就不少,肯定不会更快
char Table[256] =
{0, 1, 1, 2, 1, 2, 2, 3,..........8};
// 0, 1, 2, 3, 4, 5, 6, 7,..........255
int Get1Bits(int nSmble)
{
int nCounts = 0;
for(int i=0; i < 32; i+=8)
{
nCounts += Table[((unsigned char)(nSmble >> i))]
}
return nCounts;
}