logo

Was ist das 2er-Komplement in C?

Das 2er-Komplement in C wird aus dem 1er-Komplement in C erzeugt. Wie wir wissen, entsteht das 1er-Komplement einer Binärzahl durch Transformation von Bit 1 in 0 und 0 in 1; Das 2er-Komplement einer Binärzahl entsteht durch Addition von Eins zum 1er-Komplement einer Binärzahl.

Kurz gesagt können wir sagen, dass das Zweierkomplement in C als die Summe des Einerkomplements in C und Eins definiert ist.

2er-Komplement in C

In der obigen Abbildung ist die Binärzahl gleich 00010100 und ihr Einserkomplement wird durch Transformation des Bits 1 in 0 und 0 in 1 umgekehrt berechnet. Daher wird das Einerkomplement zu 11101011. Nach der Berechnung des Einerkomplements berechnen wir das Zweierkomplement, indem wir 1 zum Einerkomplement addieren. Das Ergebnis ist 11101100.

Lassen Sie uns ein Programm des 2er-Komplements erstellen.

 #include int main() { int n; // variable declaration printf('Enter the number of bits do you want to enter :'); scanf('%d',&n); char binary[n+1]; // binary array declaration; char onescomplement[n+1]; // onescomplement array declaration char twoscomplement[n+1]; // twoscomplement array declaration int carry=1; // variable initialization printf('
Enter the binary number : '); scanf('%s', binary); printf('%s', binary); printf('
The ones complement of the binary number is :&apos;); // Finding onescomplement in C for(int i=0;i<n;i++) { if(binary[i]="=&apos;0&apos;)" onescomplement[i]="1" ; else } onescomplement[n]="" printf('%s',onescomplement); printf('
the twos complement of a binary number is : '); finding twoscomplement in c for(int i="n-1;">=0; i--) { if(onescomplement[i] == &apos;1&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;0&apos;; } else if(onescomplement[i] == &apos;0&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;1&apos;; carry = 0; } else { twoscomplement[i] = onescomplement[i]; } } twoscomplement[n]=&apos;&apos;; printf(&apos;%s&apos;,twoscomplement); return 0; } </n;i++)>

Ausgabe

2er-Komplement in C

Analyse des oben genannten Programms,

  • Zuerst geben wir die Anzahl der Bits ein und sie wird im ' N ' variabel.
  • Nachdem wir die Anzahl der Bits eingegeben haben, deklarieren wir ein Zeichenarray, d. h. char binär[n+1], welches die Binärzahl enthält. Der ' N ' ist die Anzahl der Bits, die wir im vorherigen Schritt eingegeben haben; Es definiert im Wesentlichen die Größe des Arrays.
  • Wir deklarieren zwei weitere Arrays, d. h. onescomplement[n+1] , Und Zweierkomplement[n+1]. Der onescomplement[n+1] Das Array enthält das Einerkomplement einer Binärzahl, während das Zweierkomplement[n+1] Das Array enthält das Zweierkomplement einer Binärzahl.
  • Initialisieren Sie die tragen Variable und weisen Sie dieser Variablen 1 Wert zu.
  • Nach den Deklarationen geben wir die Binärzahl ein.
  • Jetzt berechnen wir einfach das Einerkomplement einer Binärzahl. Dazu erstellen wir eine Schleife das das gesamte binäre Array durchläuft, for(int i=0;i. In der for-Schleife wird die Bedingung überprüft, ob das Bit 1 oder 0 ist. Wenn das Bit 1 ist, dann Einserkomplement[i]=0 anders onescomplement[i]=1 . Auf diese Weise wird das Einerkomplement einer Binärzahl erzeugt.
  • Nach der Berechnung des Einerkomplements erzeugen wir das 2er-Komplement einer Binärzahl. Dazu erstellen wir eine Schleife das vom letzten Element zum Startelement iteriert. In der for-Schleife haben wir drei Bedingungen:
    • Wenn das Bit von onescomplement[i] 1 ist und der Wert von Carry 1 ist, dann setzen wir 0 in twocomplement[i].
    • Wenn das Bit von Einserkomplement[i] 0 und der Übertragswert 1 ist, dann setzen wir 1 in Zweierkomplement[i] und 0 in Übertrag.
    • Wenn die beiden oben genannten Bedingungen falsch sind, ist onescomplement[i] gleich twoscomplement[i].

Vorzeichenbehaftete ganze Zahlen werden in C häufig mit dem dargestellt Zweierkomplement-Notation . Dasselbe verwenden binäre Darstellung bietet einen Mechanismus, um beides auszudrücken positiv Und negative ganze Zahlen . Der höchstwertiges Bit (MSB) wird als verwendet Vorzeichenbit in einem Zweierkomplementdarstellung , Wo 0 bezeichnet a positive ganze Zahl , Und 1 bezeichnet a negative Zahl .

Beginnend mit a negative Zahlen Absolutwert in binärer Form, Sie können den nehmen Einerkomplement (bitweise Negation) von diesem Wert, um das zu erhalten Zweierkomplement Darstellung der negative ganze Zahl . Du fügst hinzu 1 zum resultierender Wert die Darstellung des zu erwerben Zweierkomplement .

Der Zweierkomplementkodierung in C darstellen kann ganze Zahlen mit Vorzeichen und kann schnelle Rechenoperationen durchführen. Ein Vorteil der Verwendung des Zweierkomplements ist die Möglichkeit, dies zu tun Zusatz Und Subtraktion unter Verwendung der gleichen binären Operationen wie für vorzeichenlose Zahlen.

Der Binärzahlen werden addiert wie vorzeichenlose ganze Zahlen beim Addieren des Zweierkomplements. Eine Mitnahme vom Standort des Hauptkritikpunkt wird einfach ignoriert. Aufgrund dieser Tatsache ist die Handhabung signierte Zahlen Anders ist nicht notwendig und das Hinzufügen wird einfach.

Erwägen Sie das Hinzufügen -5 Und -3 Verwendung der 8-Bit-Zweierkomplement Darstellung, zum Beispiel:

Binärzahl für -5 Ist 11111011.

Binärzahl für -3 Ist 11111101 .

Durchführung der Addition:

 11111011 (-5) + 11111101 (-3) ------------- 111110100 (-8) 

Die Antwort ist 111110100 , welches in Zweierkomplement ist gleich -8 .

Ähnlich wie bei der Addition kann die Subtraktion durch die Behandlung erfolgen zweiten Operanden Zweierkomplement, als wäre es eine Addition. Mit anderen Worten: Sie addieren das Zweierkomplement einer negativen Zahl zum ersten Operanden, um es zu entfernen.

Zum Beispiel wann -3 abgezogen wird -5 :

Im Binärformat, -5 wird vertreten durch 11111011 Und -(-3) von 00000011 (Zweierkomplement von -3 )

Durchführung der Subtraktion

 11111011 (-5) + 00000011 (+3) ------------- 11111110 (-8) 

Das Ergebnis ist 11111110 , was im Zweierkomplement gleich ist -8 .

Abschluss:

In C ist die 2er-Komplement ist eine binäre Darstellung einer negativen Zahl, die durch Addition von eins zur erzeugt wird 1er-Komplement . Computersysteme nutzen diese Idee häufig, um vorzeichenbehaftete Zahlen darzustellen und arithmetische Operationen effizient auszuführen.

Um das zu bekommen 2er-Komplement einer binären ganzen Zahl muss man zunächst die bestimmen 1er-Komplement der Zahl durch Umdrehen der Bits. Danach erfolgt die Darstellung des 2er-Komplement wird erhalten durch eins hinzufügen zum 1er-Komplement . Der höchstwertiges Bit (MSB) fungiert als Vorzeichenbit, indem es ausdrückt, ob eine Zahl vorhanden ist positiv oder Negativ .

Die Berechnung der 2er-Komplement für eine gegebene binäre Ganzzahl wird im beigefügten C-Programm angezeigt. Der Benutzer wird aufgefordert, beides einzugeben Binärzahl und die Anzahl der Bits. Danach führt das Programm die erforderlichen Schritte aus, um das 1er-Komplement zu erhalten, und anschließend das 2er-Komplement . Anschließend werden die Ergebnisse angezeigt.

In der Informatik und Programmierung ist es entscheidend, das zu verstehen 2er-Komplement Darstellung, da sie es ermöglicht, negative binär ausgedrückte Werte effektiv zu verarbeiten. Es macht Addition Subtraktion , Und logische Operationen bei beiden einfacher positiv Und negative Zahlen . Die Reichweite von darstellbare ganze Zahlen ist symmetrisch zu null aufgrund der 2er-Komplement Darstellung, wodurch sie für verschiedene numerische Operationen geeignet ist.

Programmierer können arithmetische Operationen durchführen, mit Binärdaten arbeiten und Algorithmen mit vorzeichenbehafteten Ganzzahlen in C und anderen Programmiersprachen entwerfen, wenn sie die Idee des Zweierkomplements verstehen und richtig nutzen.