logo

Aký je doplnok 2s v C?

Doplnok 2s v C sa generuje z doplnku 1 v C. Ako vieme, doplnok 1s binárneho čísla je vytvorený transformáciou bitu 1 na 0 a 0 na 1; 2s doplnok binárneho čísla sa generuje pridaním jednotky k 1s doplnku binárneho čísla.

V skratke môžeme povedať, že dvojkový doplnok v C je definovaný ako súčet jedničkového doplnku v C a jedničky.

Doplnok 2s v C

Na obrázku vyššie sa binárne číslo rovná 00010100 a jeho jeden doplnok sa vypočíta transformáciou bitu 1 na 0 a 0 na 1 naopak. Preto sa jeden doplnok stane 11101011. Po vypočítaní svojho doplnku vypočítame dvojku tak, že k doplnku jedničky pripočítame 1 a výsledkom je 11101100.

Vytvorme program 2s doplnku.

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

Výkon

Doplnok 2s v C

Analýza vyššie uvedeného programu,

  • Najprv zadáme počet bitov a ten sa uloží do n premenná.
  • Po zadaní počtu bitov deklarujeme pole znakov, t.j. binárny znak[n+1], ktorý obsahuje binárne číslo. ' n ' je počet bitov, ktoré sme zadali v predchádzajúcom kroku; v podstate definuje veľkosť poľa.
  • Deklarujeme ďalšie dve polia, t.j. jeden doplnok[n+1] , a dvojkomplement[n+1]. The jeden doplnok[n+1] pole obsahuje jedničky doplnku binárneho čísla, zatiaľ čo dvojkomplement[n+1] pole obsahuje dvojkový doplnok binárneho čísla.
  • Inicializujte niesť premennej a priraďte tejto premennej 1 hodnotu.
  • Po deklaráciách zadáme binárne číslo.
  • Teraz jednoducho vypočítame jeden doplnok binárneho čísla. Aby sme to dosiahli, vytvoríme a slučka ktorý sa iteruje v binárnom poli, for(int i=0;i. V slučke for sa podmienka kontroluje, či je bit 1 alebo 0. Ak je bit 1, potom onecomplement[i]=0 inak onecomplement[i]=1 . Týmto spôsobom sa generuje vlastný doplnok binárneho čísla.
  • Po výpočte vlastného doplnku vygenerujeme 2s doplnok binárneho čísla. Aby sme to dosiahli, vytvoríme a slučka ktorý iteruje od posledného prvku k počiatočnému prvku. V slučke for máme tri podmienky:
    • Ak je bit onecomplement[i] 1 a hodnota carry je 1, potom dáme 0 do twocomplement[i].
    • Ak je bit onecomplement[i] 0 a hodnota carry je 1, potom vložíme 1 do dvoch doplnkov[i] a 0 do carry.
    • Ak sú vyššie uvedené dve podmienky nepravdivé, potom jeden doplnok[i] sa rovná dvom doplnkom[i].

Celé čísla so znamienkom sú často reprezentované v C pomocou dvojkový doplnok zápisu . Pomocou toho istého binárne zobrazenie ponúka mechanizmus na vyjadrenie oboch pozitívne a záporné celé čísla . The najvýznamnejší bit (MSB) sa používa ako znamenie bit v zastúpenie dvoch doplnkov , kde 0 označuje a kladné celé číslo , a 1 označuje a záporné číslo .

Počnúc a záporné čísla absolútnu hodnotu v binárnej forme, môžete si vziať vlastný doplnok (bitová negácia) tejto hodnoty získať dvojkový doplnok zastúpenie záporné celé číslo . Ty pridáš 1 k výsledná hodnota získať zastúpenie dvojkový doplnok .

The kódovanie s dvojkovým doplnkom v C môže predstavovať celé čísla so znamienkom a dokáže vykonávať rýchle aritmetické operácie. Jednou z výhod využitia dvoch doplnkov je schopnosť robiť doplnenie a odčítanie pomocou rovnakých binárnych operácií ako pre čísla bez znamienka.

The binárne čísla sa sčítavajú ako celé čísla bez znamienka pri pridávaní dvojkového doplnku. Vynesenie z miesta hlavný kritický bit sa len ignoruje. Vzhľadom na túto skutočnosť manipulácia podpísané čísla inak nie je potrebné a pridávanie sa stáva jednoduchým.

Zvážte pridanie -5 a -3 pomocou 8-bitový dvojkový doplnok zastupovanie, napr.

Binárne číslo pre -5 je 11111011.

Binárne číslo pre -3 je 11111101 .

vykonávanie doplnenia:

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

Odpoveď je 111110100 , ktorý v dvojkový doplnok rovná sa -8 .

Podobne ako pri sčítaní môže byť odčítanie uskutočnené ošetrením druhý operand dvojkový doplnok, ako keby to bol sčítanie. Inými slovami, pridáte dvojkový doplnok záporného čísla k prvému operandu, aby ste ho odstránili.

Napríklad, keď -3 sa odpočítava od -5 :

binárne, -5 je zastúpený 11111011 a -(-3) podľa 00000011 (dva doplnok -3 )

Vykonanie odčítania

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

Výsledkom je 11111110 , čo sa v dvojkom doplnku rovná -8 .

Záver:

V C, 2s doplniť je binárne vyjadrenie záporného čísla, ktoré sa vytvorí pridaním jednotky k číslu 1s doplniť . Počítačové systémy často využívajú túto myšlienku na reprezentáciu čísel so znamienkom a na efektívne vykonávanie aritmetických operácií.

Ak chcete získať 2s doplniť binárneho celého čísla, treba najprv určiť 1s doplniť čísla preklápaním bitov. Po tom, zastúpenie 2s doplniť sa získava pomocou pridanie jedného k 1s doplniť . The najvýznamnejší bit (MSB) bude fungovať ako znakový bit vyjadrením toho, či číslo je pozitívne alebo negatívne .

Výpočet 2s doplniť pre dané binárne celé číslo je uvedené v priloženom programe C. Používateľ je vyzvaný na zadanie oboch binárne číslo a počet bitov. Potom program vykoná požadované postupy na získanie doplnku 1s a potom 2s doplniť . Potom sa zobrazia zistenia.

V informatike a programovaní je dôležité pochopiť 2s doplniť reprezentáciu, pretože umožňuje efektívne zaobchádzať so zápornými hodnotami vyjadrenými binárne. To robí sčítanie, odčítanie , a logické operácie jednoduchšie na oboch pozitívne a záporné čísla . Rozsah reprezentovateľné celé čísla je symetrický okolo nula v dôsledku 2s doplniť reprezentácia, vďaka čomu je vhodná pre rôzne numerické operácie.

Programátori môžu vykonávať aritmetické operácie, pracovať s binárnymi údajmi a navrhovať algoritmy pomocou celých čísel so znamienkom v C a iných programovacích jazykoch tak, že pochopia myšlienku doplnku 2s a správne ju použijú.