logo

Care este complementul 2 în C?

Complementul 2s din C este generat din complementul 1s din C. După cum știm că complementul 1s al unui număr binar este creat prin transformarea bitului 1 la 0 și 0 la 1; complementul 2 al unui număr binar este generat prin adăugarea unuia la complementul 1 al unui număr binar.

Pe scurt, putem spune că complementul 2 din C este definit ca suma complementului unu din C și unu.

complementul 2s în C

În figura de mai sus, numărul binar este egal cu 00010100, iar complementul său unul este calculat transformând bitul 1 la 0 și 0 la 1 invers. Prin urmare, complementul unu devine 11101011. După ce calculăm complementul, calculăm complementul a doi adăugând 1 la complementul unu, iar rezultatul acestuia este 11101100.

Să creăm un program 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++)>

Ieșire

complementul 2s în C

Analiza programului de mai sus,

  • În primul rând, introducem numărul de biți și acesta este stocat în „ n ' variabil.
  • După introducerea numărului de biți, declarăm matrice de caractere, adică char binar[n+1], care detine numarul binar. ' n ' este numărul de biți pe care i-am introdus în pasul anterior; practic definește dimensiunea matricei.
  • Declarăm încă două matrice, adică un complement[n+1] , și twoscomplement[n+1]. The un complement[n+1] tabloul deține complementul unui număr binar în timp ce douăscomplement[n+1] tabloul deține complementul a doi al unui număr binar.
  • Inițializați transporta variabilă și atribuiți 1 valoare acestei variabile.
  • După declarații, introducem numărul binar.
  • Acum, pur și simplu calculăm complementul unu al unui număr binar. Pentru a face acest lucru, creăm un buclă care iterează în întreaga matrice binară, for(int i=0;i. În bucla for, condiția este verificată dacă bitul este 1 sau 0. Dacă bitul este 1, atunci onescomplement[i]=0 altfel onescomplement[i]=1 . În acest fel, se generează complementul unui număr binar.
  • După calcularea complementului unu, generăm complementul 2 al unui număr binar. Pentru a face acest lucru, creăm un buclă care iterează de la ultimul element la elementul de pornire. În bucla for, avem trei condiții:
    • Dacă bitul onescomplement[i] este 1 și valoarea carry este 1, atunci punem 0 în twocomplement[i].
    • Dacă bitul onescomplement[i] este 0 și valoarea carry este 1, atunci punem 1 în twoscomplement[i] și 0 în carry.
    • Dacă cele două condiții de mai sus sunt false, atunci onescomplement[i] este egal cu twoscomplement[i].

numere întregi semnate sunt reprezentate frecvent în C folosind notația complementului a doi . Folosind la fel reprezentare binară oferă un mecanism de exprimare a ambelor pozitiv și numere întregi negative . The bitul cel mai semnificativ (MSB) este folosit ca semn bit într-o reprezentarea complementului a doi , Unde 0 denotă a număr întreg pozitiv , și 1 denotă a număr negativ .

Începând cu a numerele negative valoare absolută în formă binară, puteți lua complementul cuiva (negație pe biți) de acea valoare pentru a obține complement a doi reprezentare a întreg negativ . Adaugi 1 la valoarea rezultată pentru a dobândi reprezentarea celui complement a doi .

The codificarea complementului a doi în C poate reprezenta numere întregi cu semn și poate efectua operații aritmetice rapide. Un beneficiu al folosirii complementului a doi este capacitatea de a face plus și scădere folosind aceleași operații binare ca și pentru numerele fără semn.

The numere binare sunt adăugate împreună ca numere întregi fără semn la adăugarea complementului a doi. Un transport din locația elementul critic principal este doar nesocotită. Datorită acestui fapt, manipularea numere semnate diferit nu este necesar, iar adăugarea devine simplă.

Luați în considerare adăugarea -5 și -3 folosind complement a doi pe 8 biți reprezentare, de exemplu:

Număr binar pentru -5 este 11111011.

Număr binar pentru -3 este 11111101 .

efectuând adăugarea:

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

Raspunsul este 111110100 , in care complement a doi este egal cu -8 .

Similar cu adăugarea, scăderea se poate face prin tratarea al doilea operand complementul a doi ca și cum ar fi adunare. Cu alte cuvinte, adăugați complementul a doi al unui număr negativ la primul operand pentru a-l elimina.

De exemplu, când -3 se scade din -5 :

În binar, -5 este reprezentat de 11111011 și -(-3) de 00000011 (complementul a doi al -3 )

Efectuarea scăderii

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

Rezultatul este 11111110 , care în complementul a doi este egal cu -8 .

Concluzie:

În C, complementul 2s este o reprezentare binară a unui număr negativ care este creat prin adăugarea unuia la complementul 1s . Sistemele informatice folosesc frecvent această idee pentru a reprezenta numerele cu semne și pentru a efectua eficient operații aritmetice.

Pentru a obține complementul 2s a unui întreg binar, trebuie mai întâi să se determine complementul 1s a numărului prin răsturnarea biților. După aceea, reprezentarea complementul 2s se obtine prin adăugând unul la complementul 1s . The bitul cel mai semnificativ (MSB) va funcționa ca un bit de semn exprimând dacă un număr este pozitiv sau negativ .

Calculul complementul 2s pentru un număr întreg binar dat este afișat în programul C atașat. Utilizatorului i se solicită să introducă atât număr binar și numărul de biți. După aceea, programul efectuează procedurile necesare pentru a obține complementul 1s, iar apoi complementul 2s . Descoperirile sunt apoi prezentate.

În informatică și programare, este esențial să înțelegem complementul 2s reprezentare deoarece face posibilă gestionarea eficientă a valorilor negative exprimate în binar. Face adunare, scădere , și operatii logice mai simplu la ambele pozitiv și numere negative . Gama de numere întregi reprezentabile este simetric cu privire la zero din cauza complementul 2s reprezentare, făcându-l adecvat pentru diverse operații numerice.

Programatorii pot efectua operații aritmetice, pot lucra cu date binare și pot proiecta algoritmi folosind numere întregi cu semne în C și alte limbaje de programare prin înțelegerea ideii de complement 2 și utilizând-o în mod corespunzător.