logo

Kaj je komplement 2s v C?

Komplement 2s v C je ustvarjen iz komplementa 1s v C. Kot vemo, je komplement 1s binarnega števila ustvarjen s pretvorbo bita 1 v 0 in 0 v 1; komplement 2s binarnega števila se ustvari z dodajanjem ena k komplementu 1s binarnega števila.

Na kratko lahko rečemo, da je komplement 2s v C definiran kot vsota komplementa enice v C in ena.

2s komplement v C

Na zgornji sliki je binarno število enako 00010100, njegov komplement ena pa se izračuna s pretvorbo bita 1 v 0 in 0 v 1 obratno. Zato postane komplement ene 11101011. Po izračunu komplementa ene izračunamo komplement dveh tako, da komplementu enice prištejemo 1, rezultat pa je 11101100.

Ustvarimo program 2s komplementa.

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

Izhod

2s komplement v C

Analiza zgornjega programa,

  • Najprej vnesemo število bitov, ki se shrani v ' n ' spremenljivka.
  • Po vnosu števila bitov deklariramo matriko znakov, tj. dvojiški char [n+1], ki vsebuje binarno število. ' n ' je število bitov, ki smo jih vnesli v prejšnjem koraku; v bistvu določa velikost matrike.
  • Deklariramo še dve matriki, tj. enokomplement [n+1] , in dvojni komplement [n+1]. The enokomplement [n+1] matrika vsebuje komplement enic binarnega števila, medtem ko dvojni komplement [n+1] matrika vsebuje dva komplementa binarnega števila.
  • Inicializirajte nositi in tej spremenljivki dodelite 1 vrednost.
  • Po deklaracijah vnesemo binarno število.
  • Zdaj preprosto izračunamo komplement enice binarnega števila. Da bi to naredili, ustvarimo a zanka ki ponavlja celotno binarno polje, for(int i=0;i. V zanki for se preveri pogoj, ali je bit 1 ali 0. Če je bit 1, onecomplement[i]=0 drugače onecomplement[i]=1 . Na ta način se ustvari komplement binarnega števila.
  • Po izračunu enega komplementa generiramo komplement 2s binarnega števila. Da bi to naredili, ustvarimo a zanka ki se ponavlja od zadnjega elementa do začetnega elementa. V zanki for imamo tri pogoje:
    • Če je bit onecomplement[i] 1 in je vrednost prenosa 1, potem postavimo 0 v twocomplement[i].
    • Če je bit onecomplement[i] 0 in je vrednost prenosa 1, potem postavimo 1 v twoscomplement[i] in 0 v prenos.
    • Če sta zgornja dva pogoja napačna, potem je onecomplement[i] enako twoscomplement[i].

Cela števila s predznakom so pogosto predstavljeni v C z uporabo dvojni komplementni zapis . Uporaba istega binarna predstavitev ponuja mehanizem za izražanje obojega pozitivno in negativna cela števila . The najpomembnejši bit (MSB) se uporablja kot znak bit v predstavitev komplementa dveh , kje 0 označuje a pozitivno celo število , in 1 označuje a negativno število .

Začenši z a negativna števila absolutno vrednost v binarni obliki, lahko vzamete en komplement (bitna negacija) te vrednosti, da bi dobili komplement dveh zastopanje negativno celo število . Ti dodajaš 1 do rezultantna vrednost pridobiti zastopstvo komplement dveh .

The kodiranje komplementa dveh v C lahko predstavlja cela števila s predznakom in lahko izvaja hitre aritmetične operacije. Ena od prednosti uporabe komplementa dveh je zmožnost narediti dodatek in odštevanje z uporabo istih binarnih operacij kot za nepredznačena števila.

The binarna števila se seštevajo kot nepredznačena cela števila pri seštevanju komplementa dveh. Iznos z lokacije glavni kritični del se samo ne upošteva. Zaradi tega dejstva, rokovanje podpisane številke drugače ni potrebno in seštevanje postane preprosto.

Razmislite o dodajanju -5 in -3 uporabljati 8-bitni komplement dveh zastopstvo, npr.

Binarno število za -5 je 11111011.

Binarno število za -3 je 11111101 .

izvedba dodatka:

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

Odgovor je 111110100 , ki v komplement dveh je enako -8 .

Podobno kot seštevanje lahko tudi odštevanje izvedemo z obdelavo drugi operandi komplement dveh, kot da bi bil seštevek. Z drugimi besedami, prvemu operandu dodate dvojni komplement negativnega števila, da ga odstranite.

Na primer, ko -3 se odšteje od -5 :

V dvojiški obliki, -5 predstavlja 11111011 in -(-3) avtor 00000011 (dopolnilo dveh -3 )

Izvajanje odštevanja

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

Rezultat je 11111110 , kar je v komplementu dveh enako -8 .

Zaključek:

V C je 2s komplement je binarna predstavitev negativnega števila, ki se ustvari z dodajanjem ena k 1s komplement . Računalniški sistemi pogosto uporabljajo to idejo za predstavitev predpisanih števil in učinkovito izvajanje aritmetičnih operacij.

Da bi dobili 2s komplement binarnega celega števila je treba najprej določiti 1s komplement števila z obračanjem bitov. Po tem je zastopanje v 2s komplement se pridobi z dodajanje enega do 1s komplement . The najpomembnejši bit (MSB) bo deloval kot predznakovni bit z izražanjem, ali je število pozitivno oz negativno .

Izračun za 2s komplement za dano binarno celo število je prikazano v priloženem programu C. Uporabnik je pozvan, da vnese oba binarno število in število bitov. Po tem program izvede zahtevane postopke za pridobitev komplementa 1s in nato 2s komplement . Nato se prikažejo ugotovitve.

V računalništvu in programiranju je ključnega pomena razumevanje 2s komplement predstavitev, saj omogoča učinkovito obravnavanje negativnih vrednosti, izraženih v dvojiški obliki. Naredi seštevanje, odštevanje , in logične operacije enostavnejši na obeh pozitivno in negativna števila . Razpon od predstavljiva cela števila je približno simetrična nič zaradi 2s komplement predstavitev, zaradi česar je primeren za različne numerične operacije.

Programerji lahko izvajajo aritmetične operacije, delajo z binarnimi podatki in oblikujejo algoritme z uporabo predznačenih celih števil v C in drugih programskih jezikih, tako da razumejo idejo komplementa 2 in jo pravilno uporabljajo.