Bitvergleich tut nicht

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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)
    Last edited by 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.

    Comment


    • #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.

      Comment


      • #4
        ihr habt recht
        Last edited by 3DMax; 05-08-2006, 23:25.

        Comment

        Working...
        X