Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизОпределение состояния бита Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c