logo

Mikä on C:n 2s-komplementti?

C:n 2s-komplementti generoidaan C:n 1s-komplementista. Kuten tiedämme, binääriluvun 1s-komplementti luodaan muuttamalla bitti 1 arvoksi 0 ja 0 arvoksi 1; binääriluvun 2s-komplementti generoidaan lisäämällä yksi binääriluvun 1s-komplementtiin.

Lyhyesti sanottuna voidaan sanoa, että C:n 2s-komplementti määritellään C:n yhden komplementin ja yhden komplementin summaksi.

2s komplementti C:ssä

Yllä olevassa kuvassa binääriluku on yhtä kuin 00010100 ja sen komplementti lasketaan muuntamalla bitti 1 arvoksi 0 ja 0:ksi 1 päinvastoin. Siksi komplementista tulee 11101011. Komplementin laskemisen jälkeen lasketaan kahden komplementin komplementti lisäämällä ykkösen komplementtiin 1 ja sen tulos on 11101100.

Luodaan 2s-komplementin ohjelma.

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

Lähtö

2s komplementti C:ssä

Yllä olevan ohjelman analyysi,

  • Ensin syötetään bittien lukumäärä, ja se tallennetaan ' n ' muuttuja.
  • Kun bittimäärä on syötetty, julistamme merkkijonon, ts. binäärimerkki[n+1], joka sisältää binääriluvun. ' n ' on edellisessä vaiheessa syöttämiemme bittien lukumäärä; se määrittää periaatteessa taulukon koon.
  • Ilmoitamme vielä kaksi taulukkoa, ts. ykköset täydentävät[n+1] , ja kaksikomplementti[n+1]. The ykköset täydentävät[n+1] taulukko sisältää binääriluvun komplementin, kun taas kaksikomplementti[n+1] taulukko sisältää binääriluvun kahden komplementin.
  • Alusta kantaa muuttuja ja anna tälle muuttujalle yksi arvo.
  • Ilmoitusten jälkeen syötetään binääriluku.
  • Nyt laskemme yksinkertaisesti binääriluvun yhden komplementin. Tätä varten luomme a silmukka joka toistuu koko binääritaulukossa, for(int i=0;i. For-silmukassa ehto tarkistetaan onko bitti 1 vai 0. Jos bitti on 1, niin yksikomplementti[i]=0 muu onecomplement[i]=1 . Tällä tavalla muodostetaan binääriluvun komplementti.
  • Kun komplementti on laskettu, generoimme binääriluvun 2s-komplementin. Tätä varten luomme a silmukka joka iteroituu viimeisestä elementistä aloituselementtiin. For-silmukassa meillä on kolme ehtoa:
    • Jos oneskomplementin [i] bitti on 1 ja siirtoarvo on 1, laitetaan 0 kahteen komplementtiin[i].
    • Jos ykköskomplementin [i] bitti on 0 ja siirron arvo on 1, laitetaan kaksikomplementtiin[i] 1 ja siirtoon 0.
    • Jos yllä olevat kaksi ehtoa ovat vääriä, yksikomplementti[i] on yhtä suuri kuin kaksikomplementti[i].

Merkilliset kokonaisluvut ovat usein edustettuina C:ssä käyttämällä kahden komplementtimerkintä . Käyttämällä samaa binääriesitys tarjoaa mekanismin ilmaista molempia positiivinen ja negatiiviset kokonaisluvut . The tärkein bitti (MSB) käytetään merkki bitti jonkin sisällä kahden komplementtiesitys , missä 0 tarkoittaa a positiivinen kokonaisluku , ja 1 tarkoittaa a negatiivinen numero .

Alkaen a negatiiviset luvut itseisarvon binäärimuodossa, voit ottaa komplementti (bittikohtainen negaatio) tuosta arvosta saadaksesi kahden komplementti edustus negatiivinen kokonaisluku . Sinä lisäät 1 kohtaan tuloksena oleva arvo hankkia edustus kahden komplementti .

The kahden komplementin koodaus C:ssä voi edustaa etumerkillisiä kokonaislukuja ja pystyy suorittamaan nopeita aritmeettisia operaatioita. Yksi hyöty kahden komplementin käyttämisestä on kyky tehdä lisäys ja vähennyslasku käyttäen samoja binäärioperaatioita kuin etumerkittömille numeroille.

The binääriluvut lisätään yhteen kuten etumerkittömät kokonaisluvut kun lisätään kahden komplementti. Kuljetus sijainnista tärkein kriittinen osa jätetään vain huomiotta. Tästä syystä käsittely allekirjoitetut numerot eri tavalla ei ole tarpeen, ja lisäämisestä tulee yksinkertaista.

Harkitse lisäämistä -5 ja -3 käyttämällä 8-bittinen kahden komplementti edustus esimerkiksi:

Binääriluku for -5 On 11111011.

Binääriluku for -3 On 11111101 .

lisäyksen suorittaminen:

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

Vastaus on 111110100 , joka sisällä kahden komplementti on yhtä suuri kuin -8 .

Samoin kuin yhteenlasku, vähennys voidaan tehdä käsittelemällä toinen operandi kahden komplementti ikään kuin se olisi lisäys. Toisin sanoen lisäät negatiivisen luvun kahden komplementin ensimmäiseen operandiin sen poistamiseksi.

Esimerkiksi milloin -3 vähennetään -5 :

binäärimuodossa, -5 edustaa 11111011 ja (-3) kirjoittaja 00000011 (kahden täydennys -3 )

Vähennyksen suorittaminen

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

Tulos on 11111110 , joka kahden komplementissa on yhtä suuri kuin -8 .

Johtopäätös:

C:ssä 2s täydentää on negatiivisen luvun binääriesitys, joka luodaan lisäämällä yksi numeroon 1s täydennys . Tietokonejärjestelmät käyttävät usein tätä ideaa edustamaan etumerkittyjä lukuja ja suorittamaan tehokkaasti aritmeettisia operaatioita.

Saadaksesi 2s täydentää binäärisen kokonaisluvun, on ensin määritettävä 1s täydennys numerosta kääntämällä bittejä. Sen jälkeen edustus 2s täydentää on hankittu lisäämällä yksi kohtaan 1s täydennys . The tärkein bitti (MSB) toimii etumerkkibittinä ilmaisemalla, onko luku positiivinen tai negatiivinen .

laskenta 2s täydentää tietylle binäärikokonaisluvulle näytetään liitteenä olevassa C-ohjelmassa. Käyttäjää kehotetaan syöttämään molemmat binääriluku ja bittien määrä. Sen jälkeen ohjelma suorittaa tarvittavat toimenpiteet saadakseen 1s-komplementin ja sitten 2s täydentää . Löydökset esitetään sitten.

Tietojenkäsittelytieteessä ja ohjelmoinnissa on ratkaisevan tärkeää ymmärtää 2s täydentää esitys, koska se mahdollistaa binäärimuodossa ilmaistujen negatiivisten arvojen tehokkaan käsittelyn. Se tekee yhteen-, vähennys- , ja loogisia operaatioita molemmissa yksinkertaisempia positiivinen ja negatiivisia lukuja . Valikoima edustavia kokonaislukuja on symmetrinen noin nolla vuoksi 2s täydentää esitys, mikä tekee siitä sopivan erilaisiin numeerisiin operaatioihin.

Ohjelmoijat voivat suorittaa aritmeettisia operaatioita, työskennellä binääridatan kanssa ja suunnitella algoritmeja käyttäen etumerkittyjä kokonaislukuja C-kielellä ja muilla ohjelmointikielillä ymmärtämällä 2s-komplementin idean ja hyödyntämällä sitä oikein.