Peter Thomassen: Bitweiser Zugriff

Beitrag lesen

Hallo liebes Forum,

mich interessiert, wie bitweiser Zugriff auf low-level-Ebene ausgeführt wird. Mit PHP schreibt man z.B.

$bit = $foo >> 5 & 1

für das 5. Bit von rechts. PHP sei nur ein Beispiel, in C macht man es wohl ähnlich. Wieviele Schritte führt der Prozessor nun aus?

1.)

  • 5 Schritte für den Bitshift
  • 1 Schritt für die and-Verknüpfung (oder sind das 32, weil alle Bits verglichen werden?)
    Wegen der Bitverschiebungen hängt die Anzahl der Schritte in diesem Fall vom zu betrachtenden Bit ab.

2.)
Der Compiler erkennt solche Konstrukte und ersetzt sie durch einen direkten Zugriff auf das Bit. Zur Laufzeit ist das also 1 Schritt (unabhängig vom zu betrachtenden Bit).
In welchen Programmiersprachen ist ein solcher direkter Zugriff (entweder per Adressierung im Programmoce oder durch die Compiler-Optimierung) möglich? Ist das überhaupt möglich?

3.)
Hängt die Sache vielleicht vom verwendeten Prozessor ab?

4.)
Gilt vielleicht etwas ganz anderes?

Danke!
Peter