Здравствуйте, Vladimir, Вы писали:
V>Подскажите алгоритм оптимального чтения LSB num бит.
V>Есть число 11110000 = F0. Необходимо прочитать справа налево num bit, начиная с first.
V>Например: first = 2, num = 5, читаем 00111 = 7.
V>Первое что приходит: V>int v = 0;
V>for (int i = first; i < num + first; i++)
V> v = (v << 1) + (value & (1 << i)) ? 1 : 0;
V>Меня смущает цикл for и оператор if.
V>Спасибо.
Пришла идея: Записать обратный порядок бит, затем читать как обычно.
v = F0;
a = (((v >> 0) & 1) << 7) |
(((v >> 1) & 1) << 6) |
(((v >> 2) & 1) << 5) |
(((v >> 3) & 1) << 4) |
(((v >> 4) & 1) << 3) |
(((v >> 5) & 1) << 2) |
(((v >> 6) & 1) << 1) |
(((v >> 7) & 1) << 0);
result = (a >> 8-(2+5)) & 1F;