在某个位置或更低位置计算设置位的有效方法是什么?给定std::bitset<64> bits任意数量的位和位位置X(0-63)在X位或更低位计数位的最有效方法是什么,如果未设置X位,则返回0注意:如果设置该位,则返回始终至少为1蛮力方式很慢:int countupto(std::bitset<64> bits, int X){
if (!bits[X]) return 0;
int total=1;
for (int i=0; i < X; ++i)
{
total+=bits[i];
}
return total;}这个count()方法bitset将为您popcount提供所有位,但bitset不支持范围
3 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
我的立即反应是测试指定的位,并立即返回0清楚。
如果超过该值,则使用该位(以及不太重要的位)设置位掩码,并and
使用原始输入创建位掩码。然后使用count()
member函数获取结果中设置的位数。
至于创建蒙版:你可以向左移动1个位置,然后减去1。
添加回答
举报
0/150
提交
取消