Bitvergleich tut nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bitvergleich tut nicht

    Ich benutze folgenden Code zum herausfinden, ob in $habe (mindestens) die Bits gesetzt sind, welche $soll verlangt:

    PHP-Code:
    $soll 0x80000000// verlangt: mindestens erstes bit gesetzt
    $habe 0xF0000000// erste 4 bits gesetzt, sollte ok sein
    $ok = ($habe $soll) == $soll;
    echo 
    $ok 'ok' 'ko'
    Das druckt 'ko' obwohl es 'ok' sein sollte.

    Wenn ich $soll = 0x40000000 setze (oder eine andere Zahl, dessen erstes Bit in der ersten Hexziffer nicht gesetzt ist), funktioniert der Vergleich wie erwartet ok.

    Wo liegt der Bug? Danke für Hinweise.
    (PHP version 5.0.3, Windows XP)
    Zuletzt geändert von itsu; 05.08.2006, 20:48.

  • #2
    Mach mal

    PHP-Code:
    var_dump($soll);
    var_dump(($habe $soll)); 
    Fällt dir was auf?
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Alles klar, die zu grossen Konstanten werden automatisch in float statt negative int umgewandelt.
      Damit gehts richtig:

      $habe = (int) 0xF0000000;
      $soll = (int) 0x80000000;

      Besten Dank und Gruss.

      Kommentar


      • #4
        ihr habt recht
        Zuletzt geändert von 3DMax; 05.08.2006, 23:25.

        Kommentar

        Lädt...
        X