Главная страница
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.028 c
9-73958
Juster~
2003-04-20 13:49
2003.10.23
Организация рендеринга


14-74453
Knight
2003-10-03 16:54
2003.10.23
Кто-нибудь один... не надо много


3-74023
Tommy
2003-10-03 12:59
2003.10.23
У меня на сервере решено для каждого клиента запускать...


7-74488
herosofnn
2003-08-11 09:11
2003.10.23
Информация о системе


14-74382
Knight
2003-10-02 18:49
2003.10.23
Как вы относитесь к журналу Хакер?