logo

Qual è il complemento a 2 in C?

Il complemento a 2 in C è generato dal complemento a 1 in C. Come sappiamo, il complemento a 1 di un numero binario viene creato trasformando il bit 1 in 0 e 0 in 1; il complemento a 2 di un numero binario viene generato aggiungendo uno al complemento a 1 di un numero binario.

In breve, possiamo dire che il complemento a 2 in C è definito come la somma del complemento a uno in C e uno.

Complemento a 2 in C

Nella figura sopra, il numero binario è uguale a 00010100 e il suo complemento a uno viene calcolato trasformando il bit 1 in 0 e 0 in 1 viceversa. Pertanto, il complemento di uno diventa 11101011. Dopo aver calcolato il complemento di uno, calcoliamo il complemento di due aggiungendo 1 al complemento di uno e il risultato è 11101100.

Creiamo un programma di complemento a 2.

 #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++)>

Produzione

Complemento a 2 in C

Analisi del programma di cui sopra,

  • Innanzitutto, inseriamo il numero di bit e questo verrà memorizzato nel file ' N ' variabile.
  • Dopo aver inserito il numero di bit, dichiariamo l'array di caratteri, ovvero carattere binario[n+1], che contiene il numero binario. IL ' N ' è il numero di bit che abbiamo inserito nel passaggio precedente; definisce fondamentalmente la dimensione dell'array.
  • Dichiariamo altri due array, ovvero uncomplemento[n+1] , E complemento a due[n+1]. IL uncomplemento[n+1] l'array contiene il complemento a unità di un numero binario mentre il complemento a due[n+1] l'array contiene il complemento a due di un numero binario.
  • Inizializza il trasportare variabile e assegnare 1 valore a questa variabile.
  • Dopo le dichiarazioni, inseriamo il numero binario.
  • Ora calcoliamo semplicemente il complemento a uno di un numero binario. Per fare ciò, creiamo un ciclo continuo che esegue l'iterazione in tutto l'array binario, for(int i=0;i. Nel ciclo for, la condizione viene verificata se il bit è 1 o 0. Se il bit è 1, allora uncomplemento[i]=0 altro uncomplemento[i]=1 . In questo modo viene generato il complemento di un numero binario.
  • Dopo aver calcolato il complemento a uno, generiamo il complemento a 2 di un numero binario. Per fare ciò, creiamo un ciclo continuo che scorre dall'ultimo elemento all'elemento iniziale. Nel ciclo for abbiamo tre condizioni:
    • Se il bit di complemento a uno[i] è 1 e il valore di riporto è 1, allora inseriamo 0 in complemento a due[i].
    • Se il bit di onecomplement[i] è 0 e il valore di carry è 1, allora inseriamo 1 in twocomplement[i] e 0 in carry.
    • Se le due condizioni precedenti sono false, allora onecomplement[i] è uguale a twocomplement[i].

Interi con segno sono spesso rappresentati in C utilizzando il simbolo notazione in complemento a due . Usando lo stesso rappresentazione binaria offre un meccanismo per esprimere entrambi positivo E interi negativi . IL bit più significativo (MSB) è usato come bit di segno in un Rappresentazione in complemento a due , Dove 0 denota a intero positivo , E 1 denota a numero negativo .

A partire da a numeri negativi valore assoluto in forma binaria, puoi prendere il il proprio complemento (negazione bit a bit) di quel valore per ottenere il complemento a due rappresentazione del intero negativo . Aggiungi 1 al valore risultante acquisire la rappresentanza del complemento a due .

IL codifica del complemento a due in C può rappresentare interi con segno e può eseguire operazioni aritmetiche veloci. Uno dei vantaggi derivanti dall'utilizzo del complemento a due è la capacità di fare aggiunta E sottrazione utilizzando le stesse operazioni binarie dei numeri senza segno.

IL numeri binari vengono sommati insieme come interi senza segno quando si aggiunge il complemento a due. Un riporto dalla posizione del principale aspetto critico è semplicemente ignorato. A causa di questo fatto, la manipolazione numeri firmati diversamente non è necessario e l'aggiunta diventa semplice.

Considera l'idea di aggiungere -5 E -3 usando il Complemento a due a 8 bit rappresentazione, ad esempio:

Numero binario per -5 È 11111011.

Numero binario per -3 È 11111101 .

eseguendo l'addizione:

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

La risposta è 111110100 , in cui complemento a due è uguale a -8 .

Similmente all'addizione, la sottrazione può essere effettuata trattando il secondo operando complemento a due come se fosse un'addizione. In altre parole, aggiungi il complemento a due di un numero negativo al primo operando per rimuoverlo.

Ad esempio, quando -3 viene sottratto -5 :

In binario, -5 è rappresentato da 11111011 E -(-3) di 00000011 (complemento a due di -3 )

Effettuare la sottrazione

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

Il risultato è 11111110 , che in complemento a due è uguale a -8 .

Conclusione:

In C, il complemento 2s è una rappresentazione binaria di un numero negativo creato aggiungendo uno a complemento 1 . I sistemi informatici utilizzano spesso questa idea per rappresentare numeri con segno ed eseguire in modo efficiente operazioni aritmetiche.

Prendere il complemento 2s di un numero intero binario, è necessario prima determinare il complemento 1 del numero invertendo i bit. Successivamente, la rappresentazione del complemento 2s è ottenuto da aggiungendone uno al complemento 1 . IL bit più significativo (MSB) funzionerà come un bit di segno esprimendo se un numero lo è positivo O negativo .

Il calcolo del complemento 2s per un dato intero binario è mostrato nel programma C allegato. All'utente viene richiesto di inserire sia il file numero binario e il numero di bit. Successivamente, il programma esegue le procedure richieste per acquisire il complemento a 1, quindi il complemento 2s . Vengono poi mostrati i risultati.

Nell'informatica e nella programmazione, è fondamentale comprendere il complemento 2s rappresentazione poiché consente di gestire efficacemente i valori negativi espressi in formato binario. Esso rende addizione, sottrazione , E operazioni logiche più semplice su entrambi positivo E numeri negativi . La gamma di interi rappresentabili è simmetrico rispetto a zero dovuto al complemento 2s rappresentazione, rendendolo appropriato per varie operazioni numeriche.

I programmatori possono condurre operazioni aritmetiche, lavorare con dati binari e progettare algoritmi utilizzando numeri interi con segno in C e altri linguaggi di programmazione comprendendo l'idea del complemento a 2 e utilizzandola correttamente.