Hallo ich arbeite an etwas, das verlangt, dass ich Zugang zu bestimmten/Bereich von Bits bekomme. Ich habe mich für die Verwendung von Bitset entschieden, weil es einfach ist, auf bestimmte Bits zuzugreifen, aber kann ich eine ganze Reihe von Bits extrahieren?in bitset, kann ich "to_ulong" für einen bestimmten Bereich von Bits verwenden?
11
A
Antwort
9
Methode A:
return (the_bitset >> start_bit).to_ulong();
Methode B (schneller als Verfahren A 100-mal auf meinem Rechner):
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 []' sollte noch schneller sein, da keine Grenzen wie in 'test()' überprüft werden. –
Vielleicht möchten Sie die Antwort gegeben akzeptieren. –