Das Einerkomplement, auch (b−1)-Komplement,[1] ist eine arithmetische Operation, die meist im Dualsystem angewendet wird. Dabei werden alle Ziffern bzw. Bits einer Binärzahl (Dualzahl) invertiert, das heißt: Aus 0
wird 1
und umgekehrt. Das hat zur Folge, dass jede Ziffer der Binärzahl und ihre korrespondierende Ziffer des Einerkomplements sich „zu 1
ergänzen“, was der Operation ihren Namen gibt. Ist also eine -stellige Binärzahl, dann ist ihr Einerkomplement
eine Subtraktion, bei der keine Überträge vorkommen. Die Operation wird auch als bitweise Negation bezeichnet und der Operator in verschiedenen Programmiersprachen als Tilde ~
notiert. Dabei wird die Zahl als Bitkette aufgefasst.
Eine Anwendung des Einerkomplements ist die gleichzeitige Manipulation einzelner Bits in einer Bitkette. Will man zum Beispiel in der Bitkette Zahl
alle Bits löschen, die in der Bitkette Maske
gesetzt sind, so kann man Zahl
mit dem Einerkomplement von Maske
bitweise UND-verknüpfen, in C-Syntax Zahl &= ~Maske;
Eine andere Anwendung ist die Einerkomplementdarstellung, ein Verfahren zur binären Darstellung negativer Ganzzahlen. Zwar lässt sie sich leicht beschreiben – das Komplement der Darstellung einer negativen Zahl ist die normale Binärdarstellung ihres Betrags –, aber die Implementation einer Recheneinheit für so dargestellte Zahlen ist umständlich. Vorteile gegenüber der heute üblichen Zweierkomplement-Darstellung hat sie nur bei der ohnehin meist langsamen Division, bei der Multiplikation mit doppelt langem Ergebnis sowie bei der Bildung einfacher Prüfsummen.