Sven Rautenberg: Bitmuster; Fehler beim Vergleich

Beitrag lesen

Moin!

Danke für die Erklärung.

Wie aber sonst kann ich ein Vergleich auf Bitebene machen?

Genau so.

Aber es ist ein Unterschied (nämlich in der notwendigen Integerzahl $b), ob du ein AND mit der Zahl 10 machst, oder mit einer Zahl, deren zehntes Bit gesetzt ist - das ist nämlich die Integerzahl 1024.

das PHP-Manual sagt nämlich:
Beispiel     Erklärung
$a & $b      Bits, die in $a und $b gesetzt sind werden gesetzt.

Ist korrekt.

Aber wenn du 3333(dez) mit 10(dez) AND-verknüpfst, dann passiert:

110100000101
000000001010
------------
000000000000 = 0 (dez) = false

Die Verknüpfung von 3333 und 9:
110100000101
000000001001
------------
000000000001 = 1(dez) = true

Ich muss doch dann keine Binärzahl angeben, oder?

Du mußt die Dezimalzahl angeben, deren Bit passend gesetzt ist. Beim zehnten Bit eben 2^10 = 1024

110100000101
010000000000
------------
010000000000 = 1024(dez) = true

Der o.g. Vergleich funktioniert übrigens mit gewünschtem Ergebnis mit JavaScript.

Code bitte! Dann siehst du den Unterschied wahrscheinlich.

  • Sven Rautenberg