hi sto lavorando su qualcosa che richiede l'accesso a specifici/range di bit. Ho deciso di usare bitset perché è facile accedere a bit specifici ma posso estrarre un'intera gamma di bit?in bitset, posso usare "to_ulong" per uno specifico intervallo di bit?
11
A
risposta
9
Metodo A:
return (the_bitset >> start_bit).to_ulong();
Metodo B (più veloce di metodo A per 100 volte sulla mia macchina):
unsigned long mask = 1;
unsigned long result = 0;
for (size_t i = start_bit; i < end_bit; ++ i) {
if (the_bitset.test(i))
result |= mask;
mask <<= 1;
}
return result;
+0
'operator []' dovrebbe essere più veloce ancora poiché nessun controllo controlla come in 'test()'. –
Si potrebbe voler accettare la risposta data. –