Есть два способа.
Низкоуровневый подход обеспечивается логическими операциями :
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
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!