Code:

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 (1shl TheBit)) <> 0;

end;

 

function BitOn(const val: longint; const TheBit: byte): LongInt;

begin

result := val or (1shl TheBit);

end;

 

function BitOff(const val: longint; const TheBit: byte): LongInt;

begin

result := val and ((1shl TheBit) xor$FFFFFFFF);

end;

 

function BitToggle(const val: longint; const TheBit: byte): LongInt;

begin

result := val xor (1shl TheBit);

end;

 

end.

 

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

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

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

 

Code:

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. Советы программистов"

 

 

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

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

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

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


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