Reference   Language | Libraries | Comparison | Changes

Bitweises NICHT (~)

Das bitweise NICHT ist dieses ~ Symbol. Das bitweise NICHT dient anders als das bitweise UND bzw. ODER nicht zur Verknüpfung zweier Operanden sondern der Invertierung eines Operanden:

    0  1    operand1

   ----------
    1  0   ~ operand1

    int a = 103;    // binär:  0000000001100111
    int b = ~a;     // binär:  1111111110011000 = -104

Es mag vielleicht überraschend sein, dass eine negative Zahl wie -104 bei der Invertierung als Ergebnis auftaucht. Dies liegt daran, dass in einer int (Integer) Variable das oberste Bit das sog. Signed-Bit ist, wenn es also eine 1 ist, dann gilt die Zahl als negativ. Dieses Verfahren nennt man Zweierkomplement (engl. two’s complement). Weitere Informationen finden sich im Wikipedia-Artikel Zweierkomplement.

Möchte man das Signed-Bit umgehen, muss man die Variable als unsigned int, also als Integer ohne Vorzeichen deklarieren.

Interessant ist auch, dass für jede Integer-Variable x, ~x das Gleiche ist wie -x-1.

Das Signed-Bit kann bei Nichtbeachtung zu unerwünschten Effekten führen.

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Share