Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Алгоритмы

Манипулирование битами
Ок, я покажу как можно это сделать на примере 4 битов. Битовые маски обычно используются в некоторых специфических свойствах.

Для 4-битных чисел максимальное значение равно 1+2+4+8 = 15 (или 1111). Если свойство будет использовать биты как флажки ( 1 = True, 0 = False), то для каждой комбинации флажков результирующее число будет всегда уникальным.

Теперь поставим перед собой задачу определения статуса отдельного бита. Довольно муторным выглядит для такой задачи преобразования битов в десятичное число. Пойдем другим путем. Возьмем число, скажем 7 (0111), и попробуем выставить ему третий справа бит. Значение для проверки - 0100 (4 десятичное).

Итак, мы сравниваем две величины - 0100 и 0111, бит за битом. Вот некоторая "кухня" работы операторов, выполняющих битовые команды:

0100 0111

4 AND 7 = 0100 (4)
 (=4, т.к. бит, который мы хотим выставить, устанавливается в 1)
4 OR 7 = 0111 (7)
 (не так много в этом примере)
4 XOR 7 = 0011 (3)
Если вы следуете за ходом моей мысли, то вы поймете, почему я начал с операции AND. Так как мы точно знаем, что идет проверка на выставленность единственного бита, который должен быть установлен в сравниваемом значении, то возможный результат может быть только 0 или (как в показанном примере) 4.

Итак, ваш код должен быть следующим:

If (YourCheckVar AND 4) = 4 Then
 3-й бит установлен
Else
 3-й бит не установлен;
Категория: Алгоритмы | Добавил: DelphiAiX (28.04.2012)
Просмотров: 722 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]