①
while(a>0)
{a=a&(a-1);//消去最后一个为1的数字
count++;
}
②
1.先造表 int[256],保存1-255对应二进制数1的个数。
2.对整数a,先求a&255再查表。
3.然后(a>>8)&255再查表。
4.依次类推,处理完所有位数,将查表所得值相加。
本文介绍两种高效算法用于计算整数中二进制位1的数量。第一种使用位操作,通过不断清除最低位的1并累加计数来实现。第二种采用预处理方式,通过查找表快速获取任意范围内的位1数量。
①
while(a>0)
{}
②
1.先造表 int[256],保存1-255对应二进制数1的个数。
2.对整数a,先求a&255再查表。
3.然后(a>>8)&255再查表。
4.依次类推,处理完所有位数,将查表所得值相加。

被折叠的 条评论
为什么被折叠?
