Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
7-74483
naestro
2003-08-12 11:23
2003.10.23
работа с устройством через COM порт


1-74287
Makhanev A.S.
2003-10-13 00:01
2003.10.23
Callback функции...


14-74480
wicked
2003-10-02 19:37
2003.10.23
CodeGuard.....


6-74349
Finger
2003-08-26 11:24
2003.10.23
Сетевая плата


6-74336
Beginer1
2003-08-22 10:44
2003.10.23
Запрос POST + Socket




   Наверх