Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.203.68] |
|
Сообщ.
#1
,
|
|
|
Проверка - установлен ли определенный бит?
function IsBitSet(Value: cardinal; BitNum : byte): boolean; begin result:=((Value shr BitNum) and 1) = 1 end; ... if IsBitSet(43691,1) then //установлен (равен 1) Автор ответа: Krid Установка бита в единицу function BitOn(const val: longint; const TheBit: byte): LongInt; begin Result := val or (1 shl TheBit); end; Установка бита в ноль function BitOff(const val: longint; const TheBit: byte): LongInt; begin Result := val and ((1 shl TheBit) xor $FFFFFFFF); end; Переключение состояния бита с единицы на ноль и наоборот function BitToggle(const val: longint; const TheBit: byte): LongInt; begin Result := val xor (1 shl TheeBit); end; Автор ответа: Smike Пример чтения данных по битовой маске из значения: procedure TForm1.Button1Click(Sender: TObject); const Col: Word = $ABCD; var R, G, B: Byte; begin R := Byte(Col shr 8) div 8; // первые 5 бит G := ((Byte(Col shr 8) and $7) * 8) or (Byte(Col) div $20); // Вторые 6 бит B := Byte(Col) and $1F; // третьи 5 бит end; Автор ответа: Rouse_ |