Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как получить доступ к битам переменной и управлять их значением?

01.01.2007
unit Bitwise;
 
interface
 
function IsBitSet(const val: longint; const TheBit: byte): boolean;
function BitOn(const val: longint; const TheBit: byte): LongInt;
function BitOff(const val: longint; const TheBit: byte): LongInt;
function BitToggle(const val: longint; const TheBit: byte): LongInt;
 
implementation
 
function IsBitSet(const val: longint; const TheBit: byte): boolean;
begin
 result
:= (val and (1 shl TheBit)) <> 0;
end;
 
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 TheBit);
end;
 
end.

SetWord – слово, которое необходимо установить.

BitNum – номер бита, который необходимо выставить согласно определениям в секции const (Bit0, Bit1 и др.).

GetBitStat возвращает значение True, если бит установлен и False – в противном случае.

const
 Bit0
= 1;
 Bit1
= 2;
 Bit2
= 4;
 Bit3
= 8;
 Bit4
= 16;
 Bit5
= 32;
 Bit6
= 64;
 Bit7
= 128;
 
 Bit8
= 256;
 Bit9
= 512;
 Bit10
= 1024;
 Bit11
= 2048;
 Bit12
= 4096;
 Bit13
= 8192;
 Bit14
= 16384;
 Bit15
= 32768;
 
procedure
SetBit(SetWord, BitNum: Word);
begin
 
SetWord := SetWord Or BitNum;        { Устанавливаем бит }
end;
 
procedure
ClearBit(SetWord, BitNum: Word);
begin
 
SetWord := SetWord Or BitNum;       { Устанавливаем бит }
 
SetWord := SetWord Xor BitNum;      { Переключаем бит }
end;
 
procedure
ToggleBit(SetWord, BitNum: Word);
begin
 
SetWord := SetWord Xor BitNum;      { Переключаем бит }
end;
 
function GetBitStat(SetWord, BitNum: Word): Boolean;
begin
 
GetBitStat := SetWord and BitNum = BitNum; { Если бит установлен }
end;

Источник: Книга В. Озерова "Delphi. Советы программистов"

Автор: StayAtHome

Взято с Vingrad.ru https://forum.vingrad.ru