Beispielcode
int a = 103; // Binär: 0000000001100111
int b = ~a; // Binär: 1111111110011000 = -104
Anmerkungen und Warnungen
Möglicherweise bist du überrascht, als Ergebnis dieses Vorgangs eine negative Zahl wie -104 zu sehen.
Dies liegt daran, dass das höchste Bit in einer int
-Variablen das sogenannte Vorzeichenbit ist.
Wenn das höchste Bit 1 ist, wird die Zahl als negativ interpretiert.
Diese Kodierung von positiven und negativen Zahlen wird als Zweierkomplement bezeichnet.
Weitere Informationen finden sich im Wikipedia-Artikel über das Zweierkomplement.
Nebenbei bemerkt ist es interessant zu wissen, dass ~x für jede ganze Zahl x das gleiche ist wie -x-1.
Das Vorzeichenbit in einem vorzeichenbehafteten ganzzahligen Ausdruck kann manchmal zu unerwünschten Überraschungen führen.