Kilian Mueller: Wofuer gibt es Bit-Operatoren?

Hallo Forum
< http://www.teamone.de/selfhtml/tebf.htm#a5>
Ich frage diese Frage aus reinem Interesse:
Wieso sollte der Programmierer einer Page etwas bei den internen Speichervorgaengen des Users veraendern wollen?
Denn dafuer sind diese Operatoren, soweit ich das verstanden habe, ja da.
Danke im voraus,
  Kilian

  1. Hallo Kilian,

    also Bit-Operatoren dienen nicht dazu willkürlich im Speicher des Benutzers rumzupfuschen, sondern die Bits von Javascript-Zahlen zu manipulieren. Jede Zahl läßt sich ja auch als Binärzahl (Zahl aus Nullen uns Einsen) schreiben.

    Beispiele:
    5 >> 2    schriebt die Bits von 5 um zwei Stellen nach rechts 000101 -->000001 = 1
    5 << 2    schriebt die Bits von 5 um zwei Stellen nach links   000101 -->010100 = 20
    Bei UND und ODER sind auch zwei Operanden da und die werden dann stellenweise verknüpft.
    Bei UND gilt, wenn beide Bits 1 sind dann ist das Ergebnisbit auch 1, sonst 0:
    0100 = 5
    &0101 = 6
    0100 =5
    Bei ODER gilt, wenn mindestens ein Bits 1 sind dann ist das Ergebnisbit auch 1, sonst 0:
    0100 = 5
    0101 = 6
    0101 =6

    Manchmal ist es ganz nützlich bestimmte Informationen als Bitmuster darzustellen und zu verarbeiten. Deshalb sind diese Operatoren in vielen Programmiersprachen enthalten.

    Gruß
       Michael

  2. Hallo!

    Wieso sollte der Programmierer einer Page etwas bei den internen Speichervorgaengen des Users veraendern wollen?
    Denn dafuer sind diese Operatoren, soweit ich das verstanden habe, ja da.

    Nein, diese Bit-Operatoren nehmen eine ganz normale Verknüpfung zweier Werte vor, wie z.B. auch + oder -, nur daß sie eben in JavaScript seltener benötigt werden. Die Beschreibung in SelfHTML ist vielleicht etwas mystisch geraten. Es handelt sich um Operationen über Ganzzahlen, aber auf der Ebene der binären Darstellung.

    a<<n ... das Ergebnis ist a mit n angehängten binären Nullen
    a>>n ... das Ergebnis ist a ohne die letzten n Binärstellen
    a & b ... im Ergebnis sind genau die Binärziffern 1, die in a _und_ b 1 sind
    a b ... im Ergebnis sind genau die Binärziffern 1, die in a _oder_ b 1 sind
    a ^ b ... im Ergebnis sind genau die Binärziffern 1, die _entweder_ in a _oder_ in b 1 sind

    Beispiele für die Anwendung wären:

    1<<n ... berechnet 2 hoch n
    a = a ^ 1<<n ... schaltet das n-te Bit in der Integer-Variablen a um
    if (a & 1<<n) ... wird ausgeführt, wenn das n-te Bit in der Integer-Variablen a gesetzt ist

    Gruß
    Steffen