我找到了一个人口计数算法,如下所示:
unsigned int v; // count the number of bits set in v
unsigned int c; // c accumulates the total bits set in v
for (c = 0; v; c++)
{
v &= v - 1; // clear the least significant bit set
}
我的问题是,是否可以将其实现为汇编(MIPS)?我不明白“for”循环是如何工作的,如果有人能解释条件是什么(我怀疑它是0< v?)。关于这个算法还有另一个问题,但它没有解释指令级深度的算法。
Cast some light on population count algorithm
旁注:我的hw是实现一个popcount算法,它计算MIPS(子程序)上32位整数的设置位,但我不允许以任何方式使用乘法/除法。希望我的问题不是重复的垃圾邮件:/