Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Определение состояния бита   Найти похожие ветки 

 
Eagle Owl ©   (2003-10-11 17:41) [0]

Добрый вечер!
Вопрос такой: допустим, имеется целочисленная переменная (Byte, Integer и т.п.). Есть ли в Delphi или WinAPI функция для определения состояния отдельно взятого бита из значения этой переменной?


 
MBo ©   (2003-10-11 17:44) [1]

С помощью and и shl


 
chupacabra ©   (2003-10-11 18:29) [2]

Все очень просто:

function BitState(const A, Bit: DWORD): Boolean;
begin
BitState:=(A and Bit = Bit);
end;

Значение Bit - соответственно:
0 бит - 1
1 бит - 2
2 бит - 4
3 бит - 8
4 бит - догадайся сам...


 
WithOut Any ... ©   (2003-10-11 18:33) [3]

var
i1,i2,i3:integer;
s1,s2,s3:string;
us1:boolean;

function DecHex(integ:integer):string;
begin
i1:=integ;
i2:=i1;
Repeat
if (i1 div 2) = 0 then us1:=true;
i2:=i1; i2:=i2 mod 2;
i1:=i1 div 2;
s1:=IntToStr(i2)+s1;
until us1=true;
DecHex:=s1;
end;


 
Eagle Owl ©   (2003-10-11 18:45) [4]

Спасибо за ответы! Так а в Delphi или WinAPI функций подобных нет?
Я же потому так и спрашивал, чтобы не писать самому, если уже есть, а то это бы получилось как повторное изобретение велосипеда...


 
chupacabra ©   (2003-10-11 18:50) [5]


> WithOut Any ... ©

Ха! Ха! Такая ф-ция в текстовых строках энто КРУТО!!! Но тока ЩИТАТЬ ана будет ДЮЖЕ ДОВГО!!!
ТЫ бы ещё компонент такой написал... или dll-ку :)))


 
Nikolay M. ©   (2003-10-11 19:02) [6]


> WithOut Any ... © (11.10.03 18:33)

Да уж, намутил :))
А если примерно так (не проверял, но смысл очевиден):

function IsBitSet (N : integer; BitPos : byte) : boolean;
begin
Result := (BitPos < 8 * sizeof(N)) and (N and (1 shl BitPos) <> 0);
end;

соответственно BitPos - номер проверяемого бита от 0 до 255.


 
Anatoly Podgoretsky ©   (2003-10-11 19:06) [7]

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html&file_i d=app-bits



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
11-74103
Puke Zero
2003-02-08 14:51
2003.10.23
Формат даты


8-74331
niko4543
2003-06-22 17:59
2003.10.23
Преобразование


1-74161
nikkkk
2003-10-10 10:36
2003.10.23
!!! Как перевести HEX в десятиричную систему !!!


3-74039
Игоряныч
2003-10-03 08:11
2003.10.23
Как закрепить левые столбцы в DBGrid.


3-74011
diokant
2003-10-06 11:48
2003.10.23
Как устранить ошибку? Отображается другое значение поля IDENTITY