Re: Алгоритм чтения LSB-bit
От: Vladimir Россия  
Дата: 18.12.24 14:56
Оценка:
Здравствуйте, 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;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.