logo

Quin és el complement 2s en C?

El complement 2s en C es genera a partir del complement 1s en C. Com sabem que el complement 1s d'un nombre binari es crea transformant el bit 1 a 0 i 0 a 1; el complement 2s d'un nombre binari es genera afegint un al complement 1s d'un nombre binari.

En resum, podem dir que el complement 2s en C es defineix com la suma del complement a un en C i un.

complement 2s en C

A la figura anterior, el nombre binari és igual a 00010100 i el seu complement únic es calcula transformant el bit 1 a 0 i 0 a 1 viceversa. Per tant, el complement a un passa a ser 11101011. Després de calcular el complement a un, calculem el complement a dos afegint 1 al complement a un, i el seu resultat és 11101100.

Creem un programa de complement 2s.

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

Sortida

complement 2s en C

Anàlisi del programa anterior,

  • En primer lloc, introduïm el nombre de bits i s'emmagatzema al fitxer ' n 'variable.
  • Després d'introduir el nombre de bits, declarem la matriu de caràcters, és a dir, char binari[n+1], que conté el nombre binari. el ' n ' és el nombre de bits que hem introduït al pas anterior; bàsicament defineix la mida de la matriu.
  • Declarem dues matrius més, és a dir, un complement[n+1] , i doscomplement[n+1]. El un complement[n+1] array conté el complement d'unitats d'un nombre binari mentre que el dos complements[n+1] matriu conté el complement a dos d'un nombre binari.
  • Inicialitzar el portar variable i assigneu 1 valor a aquesta variable.
  • Després de les declaracions, introduïm el nombre binari.
  • Ara, simplement calculem el complement únic d'un nombre binari. Per fer-ho, creem un bucle que itera per tota la matriu binària, for(int i=0;i. En el bucle for, la condició es verifica si el bit és 1 o 0. Si el bit és 1, aleshores un complement[i]=0 altra cosa un complement[i]=1 . D'aquesta manera, es genera el complement d'un nombre binari.
  • Després de calcular el complement a un, generem el complement 2s d'un nombre binari. Per fer-ho, creem un bucle que itera des de l'últim element fins a l'element inicial. En bucle for, tenim tres condicions:
    • Si el bit d'un complement[i] és 1 i el valor de carry és 1, llavors posem 0 en twocomplement[i].
    • Si el bit d'un complement[i] és 0 i el valor de portar és 1, llavors posem 1 en twoscomplement[i] i 0 en carry.
    • Si les dues condicions anteriors són falses, aleshores un complement[i] és igual a twoscomplement [i].

Nombres enters signats es representen amb freqüència en C utilitzant el notació de complement a dos . Utilitzant el mateix representació binària ofereix un mecanisme per expressar tots dos positiu i nombres enters negatius . El bit més significatiu (MSB) s'utilitza com a signe bit en a representació del complement a dos , on 0 denota a nombre enter positiu , i 1 denota a nombre negatiu .

Començant per a nombres negatius valor absolut en forma binària, podeu prendre el complement d'un (negació bit a bit) d'aquest valor per obtenir el complement de dos representació de la nombre enter negatiu . Tu afegeixes 1 fins al valor resultant per adquirir la representació de la complement de dos .

El codificació del complement a dos en C pot representar nombres enters amb signe i pot realitzar operacions aritmètiques ràpides. Un dels beneficis d'utilitzar el complement a dos és la capacitat de fer addició i resta utilitzant les mateixes operacions binàries que per als nombres sense signe.

El nombres binaris s'afegeixen com nombres enters sense signe en afegir el complement a dos. Una realització des de la ubicació del part crítica principal només s'ignora. Per aquest fet, la manipulació números signats diferent no és necessari, i l'afegit es fa senzill.

Penseu en afegir -5 i -3 utilitzant el Complement a dos de 8 bits representació, per exemple:

Nombre binari per -5 és 11111011.

Nombre binari per -3 és 11111101 .

realitzant l'addició:

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

La resposta és 111110100 , que en complement de dos és igual a -8 .

De manera semblant a la suma, la resta es pot fer tractant el segon operand complement de dos com si fos una suma. En altres paraules, afegiu el complement a dos d'un nombre negatiu al primer operand per eliminar-lo.

Per exemple, quan -3 es resta de -5 :

En binari, -5 està representat per 11111011 i -(-3) per 00000011 (complement de dos de -3 )

Realització de la resta

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

El resultat és 11111110 , que en el complement de dos és igual a -8 .

Conclusió:

En C, el complement 2s és una representació binària d'un nombre negatiu que es crea afegint-ne un al 1s complement . Els sistemes informàtics utilitzen sovint aquesta idea per representar nombres amb signe i dur a terme operacions aritmètiques de manera eficient.

Per aconseguir el complement 2s d'un nombre enter binari, primer cal determinar el 1s complement del nombre girant els bits. Després d'això, la representació del complement 2s s'obté per afegint-ne un fins al 1s complement . El bit més significatiu (MSB) funcionarà com a bit de signe expressant si un nombre ho és positiu o negatiu .

El còmput de la complement 2s per a un nombre enter binari donat es mostra al programa C adjunt. Es demana a l'usuari que introdueixi els dos nombre binari i el nombre de bits. Després d'això, el programa fa els procediments necessaris per adquirir el complement 1s, i després el complement 2s . A continuació es mostren les troballes.

En informàtica i programació, és crucial comprendre el complement 2s representació ja que permet manejar de manera eficaç els valors negatius expressats en binari. Fa suma, resta , i operacions lògiques més senzill en tots dos positiu i nombres negatius . La gamma de nombres enters representables és simètric zero a causa de la complement 2s representació, fent-la adequada per a diverses operacions numèriques.

Els programadors poden dur a terme operacions aritmètiques, treballar amb dades binàries i dissenyar algorismes utilitzant nombres enters de signe en C i altres llenguatges de programació entenent la idea del complement 2 i utilitzant-la correctament.