Du möchtest bestimmt herausbekommen welches Bit in einer Zahl gesetzt ist ?
if Odd(Value shr Bit) then ...;
Value ist zb. ein Cardinal und Bit die Bitnummer mit 0 basiertem Index.
Für 32Bit/64Bit Zahlen funktioniert dies noch sehr effizient, bei größeren Zahlen aber nicht mehr. Dort ist es dann besser mit den Assembler Bit Funktionen zu arbeiten.
Delphi-Quellcode:
type
TNumber =
array[0..31]
of Cardinal;
function IsBitSet(
const Number: TNumber; BitIndex: Integer): Boolean;
asm
BT [EAX],EDX
SETC AL
end;
In TNumber ist die lange Zahle in Litte Endian gespeichert. D.h. Number[0] ist des niedrigste Digit und Number[31] dashöchstweritge Digit.
Gruß Hagen