Delphi World - Как в байте информации выделить биты
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как в байте информации выделить биты

В Delphi используй операцию and, которая возвращает результат побитового умножения. Пример a and $10 — выделить 4-ый бит. Если результат не ноль — бит установлен.

То же самое, но на ассемблере. Это позволяет достичь максимальной скорости выполнения.


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. Если же ассемблер не поможет, надо или переделывать алгоритм, или менять компьютер :))

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования