Christian Kruse: Logische Ausdrücke (für Spezis)

Beitrag lesen

Hallo Christian,

$a &= (~ $z);

~ ist der Negierungsoperator (NOT), da werden alle Bits
vertauscht.

Hm. Negierungs-Operator gefaellt mir nicht, auch in der Dokumentation
nicht. Bei einer Negierung erwarte ich, dass das Ergebnis hinterher
das Gegenteil dessen ist, was es vorher war (true oder false).
Der ~-Operator bildet das »B-1«-Komplement, also das Muster, dass
man zu einer Zahl addierne muss, um ein vollstaendiges 1er-Muster zu
bekommen.

Uebrigens wird der Ausdruck oben benutzt, um ein bestimmtes Bitmuster
auszuschalten:

$a sei 11011001 binaer
$z sei 10000000 binaer

$a &= (~ $z) heisst dann $a = 11011001 & (~10000000) heisst dann
11011001 & 01111111 was damit 01011001 ist (das in $z gesetzte Bit
ist jetzt ausgeschaltet).

$a |= 0x40000000;

$a = $a | 0x40000000;

0x40000000 ist eine Hex-Zahl und steht für 1073741824 dezimal oder
1000000000000000000000000000000 binär.

Wuerde man in C der besseren Lesbarkeit wegen allerdings eher so
schreiben:

1<<30

denn nichts anderes will man ja mit dieser Zahl: das 30e Bit auf
1 gesetzt. In PHP wuerde der Bitshift allerdings jedesmal
ausgefuehrt, deshalb schreibt man da bereits die richtigen[tm]
Zahlen hin.

Grüße,
 CK

--
Nur die Weisesten und die Dümmsten können sich nicht ändern.
http://wwwtech.de/