在某個位置或更低位置計算設置位的有效方法是什么?給定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
提交
取消