Hi Salomon,
ich weiß nicht, hate das sakura nicht scho irgendwo gepostet?
Code:
function TestBit(aByte: Byte; aBitNum: Integer): Boolean;
begin
Result := (aByte and (1 shl aBitNum)) > 0;
end;
Das niedrigste Bit hat die Nummer 0, das höchste die Nummer 7. Wenn das Bit gesetzt ist, dann wird True zurückgegeben sonst False.
Das Prinzip ist, dass man das Byte mit einem anderen Byte, in dem nur das zu testende Bit gesetzt ist, and-verknüpft. Beispielsweise soll das 6. Bit überprüft werden:
Bit gesetzt:
Code:
x1xxxxxx
and 01000000
------------
01000000
Bit nicht gesetzt:
Code:
x0xxxxxx
and 01000000
------------
00000000
Die anderen Stellen (die mit x markiert sind) sind egal, da immer gilt: x and 0 = 0. Das zweite Byte wird durch eine shl-Operatein erzeugt. Ausgegeangen wird vom Byte 00000001. Die 1 wird dann um die gewünschte Anzahl stellen mit shl nach links verschoben.
MfG,
d3g