Einzelnen Beitrag anzeigen

Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#2
  Alt 22. Okt 2002, 16:17
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
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat