Вопрос
Подскажите, пожалуйста, как можно в байте информации выделить биты. Через сдвиг и умножение на соответствующую маску работает очень долго (из 8 секунд работы программы выделение битов в общей сложности занимает 6 сек.). Надо бы существенно ускорить выполнение этой операции.
Ответ
function GetBites(t, Mask:LongWord):LongWord; asm
mov eax, t;
and eax, mask;
end;
Эта функция возвращает t and Mask. Если необходимо выполнить сдвиг, то применяется команда shr:
function ShiftBites(t, Mask:LongWord; shift:byte):LongWord; asm
mov eax, t;
mov cl, shift;
shr eax;
and eax, Mask;
end;
Эта функция возвращает (t shr shift) and Mask. Если же ассемблер не поможет, надо или переделывать алгоритм, или менять компьютер :))
Copyright 2000-2004 Сообщество Чайников
Контактная информация