![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как работать с битами отдельно из одного байта? [D7]
pav74 © (2006-05-15 18:37:00)ктонибуть может подсказать чайнику как работать с битами отдельно из одного байта? как получить доступ к отдельным битам? зараннее спасибо
Павел
Германн (2006-05-16 01:25:00) [1]И ещё раз о своём, любимом варианте:
TMyBits = (Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7);
var
MyBitsOfByte : TMyBits;
MyBite : Byte absoluteMyBitsOfByte;
begin
MyBite:=...;
if Bit1 in MyBitsOfByte then ...
P.S.
Когда-то утверждалось, что оператор in"гораздо лучше в попугаях, чем операторы сдвига". Поскольку используют инструкцию TEST.
MetalFan (2006-05-15 18:55:00) [2]
function IsBitOn (Value: Integer; Bit: Byte): Boolean;
begin
Result := (Value and (1 shl Bit)) <> 0;
end;
function TurnBitOn (Value: Integer; Bit: Byte): Integer;
begin
Result := Value or (1 shl Bit);
end;
function TurnBitOff (Value: Integer; Bit: Byte): Integer;
begin
Result := Value and not (1 shl Bit);
end;
Ega23 (2006-05-15 18:42:00) [3]shl, shr, and