hi pracuję nad czymś, co wymaga ode mnie dostępu do określonego/zakresu bitów. zdecydowałem się użyć bitset, ponieważ łatwo jest uzyskać dostęp do konkretnych bitów, ale czy mogę wydobyć cały zakres bitów?w zestawie bitów, czy mogę użyć "to_ulong" dla określonego zakresu bitów?
11
A
Odpowiedz
9
Metoda A:
return (the_bitset >> start_bit).to_ulong();
Metoda B (szybciej niż metoda A przez 100 razy na moim komputerze):
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 []' powinien być jeszcze szybszy, ponieważ nie sprawdza granic, jak w 'test()'. –
Możesz chcieć zaakceptować daną odpowiedź. –