为了账号安全,请及时绑定邮箱和手机立即绑定

在某个位置或更低位置计算设置位的有效方法是什么?

在某个位置或更低位置计算设置位的有效方法是什么?

呼唤远方 2019-08-28 09:38:55
在某个位置或更低位置计算设置位的有效方法是什么?给定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。


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 576 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信