E.Wrtal: Bit-Operatoren

Hallo,

ich möchte Bit-Operatoren ausprobieren. Wo finde ich etwas, wie die
Syntax ist, und wie man Bit-Operatoren in einem Script oder einer
HTML-Seite einsetzt? Ich weiß, wie Bit-Operatoren in anderen Spra-
chen eingesetzt werden, aber für Javascript fehlt mir die Beschrei-
bung einer Syntax. Bei Selfhtml werden die Bit-Operatoren nur ange-
geben aber sonst nicht weiter darauf eingegangen.

MfG   E.Wrtal

  1. Hi,

    Ich weiß, wie Bit-Operatoren in anderen Sprachen eingesetzt werden, aber für Javascript fehlt mir die Beschreibung einer Syntax. Bei Selfhtml werden die Bit-Operatoren nur angegeben aber sonst nicht weiter darauf eingegangen.

    und was ist Dir bei http://de.selfhtml.org/javascript/sprache/operatoren.htm#bits dann noch unklar?

    freundliche Grüße
    Ingo

    1. Hi,

      Ich weiß, wie Bit-Operatoren in anderen Sprachen eingesetzt werden, aber für Javascript fehlt mir die Beschreibung einer Syntax. Bei Selfhtml werden die Bit-Operatoren nur angegeben aber sonst nicht weiter darauf eingegangen.

      und was ist Dir bei http://de.selfhtml.org/javascript/sprache/operatoren.htm#bits dann noch unklar?

      freundliche Grüße
      Ingo

      wie z.B.: zwei Masken bitweise mit dem &-Operator verbunden werden:
                "#FF00FF" & "#0000FF" müsste "0000FF" ergeben, ergibt aber
                bei mir 0.

      MfG    E.Wrtal

      1. Hallo,

        wie z.B.: zwei Masken bitweise mit dem &-Operator verbunden werden:
                  "#FF00FF" & "#0000FF" müsste "0000FF" ergeben, ergibt aber bei mir 0.

        Deine Schreibweise sieht auch ganz danach aus, als ob du versuchst, eine UND-Verknüpfung von zwei Strings zu machen, anstatt zwei Zahlen. Wenn du die Strings einsetzt, ist das Ergebnis 0 korrekt:
        Da der Operator & nun mal numerische Operanden erfordert, werden sie implizit umgewandelt. Und der numerische Wert von "#FF00FF" ist eben 0, weil die implizite Umwandlung beim ersten nicht-numerischen Zeichen abbricht.
        Um das Ergebnis zu erzielen, das dir vorschwebt, müsstest du die beiden Strings selbst in eine Zahl umwandeln. Erst müsstest du das "#" am Anfang  z.B. mit slice() abschneiden, dann den Rest mit parseInt() in eine Zahl umwandeln, wobei du ausnutzt, dass der optionale zweite Parameter von parseInt() die Zahlenbasis angibt.

        Wenn du auf dem Weg dorthin immer noch Probleme hast, kannst du gern nochmal nachfragen, aber versuch bitte erst einmal zu verstehen, warum es bisher nicht geklappt hat.

        Übrigens:
         var a = 0xFF00FF & 0x0000FF;
         alert (a);
        ergibt tatsächlich 255, also 0xFF, wie zu erwarten wäre. Die Bitoperation an sich funktioniert also.

        So long,

        Martin

        1. Hallo,

          wie z.B.: zwei Masken bitweise mit dem &-Operator verbunden werden:
                    "#FF00FF" & "#0000FF" müsste "0000FF" ergeben, ergibt aber bei mir 0.

          Deine Schreibweise sieht auch ganz danach aus, als ob du versuchst, eine UND-Verknüpfung von zwei Strings zu machen, anstatt zwei Zahlen. Wenn du die Strings einsetzt, ist das Ergebnis 0 korrekt:
          Da der Operator & nun mal numerische Operanden erfordert, werden sie implizit umgewandelt. Und der numerische Wert von "#FF00FF" ist eben 0, weil die implizite Umwandlung beim ersten nicht-numerischen Zeichen abbricht.
          Um das Ergebnis zu erzielen, das dir vorschwebt, müsstest du die beiden Strings selbst in eine Zahl umwandeln. Erst müsstest du das "#" am Anfang  z.B. mit slice() abschneiden, dann den Rest mit parseInt() in eine Zahl umwandeln, wobei du ausnutzt, dass der optionale zweite Parameter von parseInt() die Zahlenbasis angibt.

          Wenn du auf dem Weg dorthin immer noch Probleme hast, kannst du gern nochmal nachfragen, aber versuch bitte erst einmal zu verstehen, warum es bisher nicht geklappt hat.

          Übrigens:
          var a = 0xFF00FF & 0x0000FF;
          alert (a);
          ergibt tatsächlich 255, also 0xFF, wie zu erwarten wäre. Die Bitoperation an sich funktioniert also.

          So long,

          Martin

          Danke! Das war eine gute Erklärung!

          Schöne Grüße   E.Wrtal

          1. Hallo Ernst,

            Danke! Das war eine gute Erklärung!

            freut mich, wenn ich helfen konnte. :-)
            Übrigens: Wenn du dir hier im Forum keine Sympathien verscherzen willst, solltest du solche Fullquotes wie in deinem Vorposting besser lassen.
            Zitiere sparsam und nur so, dass der Zusammenhang und der bezug klar ist.

            Schönen Abend noch,

            Martin

      2. "#FF00FF" & "#0000FF" müsste "0000FF" ergeben, ergibt aber
                  bei mir 0.

        Bei mir nicht.

        var m1 = 0xFF00FF;  
        var m2 = 0xFF;  
        m = m1 & m2;  
        alert (m.toString(16));
        

        Live long and prosper,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)