Здравствуйте, 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>Спасибо.
а чем такой вариант не устраивает?
в каком-то эмуляторе, скорее всего PPSSPP, который эмулирует MIPS, видел шаблоны, которые автоматом конвертируют LSB в MSB, а там уж обычные сдвиги и маски можно применить.
Не предлагаю копаться в таком гигантском коде, чтобы найти эти шаблоны, просто это направление, в котором можно поискать. Не факт даже, что шаблонами быстрее будет