Есть два способа.

 Низкоуровневый подход обеспечивается логическими операциями : 

Code:

var

I : integer;

N : integer; // Номер бита в диапазоне от 0..SizeOf(TYPE)*8 - 1

begin

I := I or (1 shl N); // установка бита

I := I andnot (1 shl N); // сброс бита

I := I xor (1 shl N); // инверсия бита

if (i and (1 shl N)) <> 0 then... // проверка установленного бита

end;

 

 

Высокоуровневый подход опирается на представление числа в виде множества:

 

Code:

type

TIntegerSet = setof0..SizeOf(Integer)*8 - 1;

var

I : Integer;

N : Integer;

begin

Include(TIntegerSet(I), N); // установили N-ный бит в 1

Exclude(TIntegerSet(I), N); // сбросили N-ный бит в 0

if N in TIntegerSet(I) then... // проверили N-ный бит

end;

 

 

https://delphiworld.narod.ru/

DelphiWorld 6.0

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить