logo

Kas yra 2s papildinys C?

2s komplementas C yra generuojamas iš 1s komplemento C. Kaip žinome, dvejetainio skaičiaus 1s komplementas sukuriamas transformuojant bitą 1 į 0 ir 0 į 1; dvejetainio skaičiaus 2s komplementas generuojamas vieną pridedant prie dvejetainio skaičiaus 1s komplemento.

Trumpai tariant, galime pasakyti, kad 2s papildinys C yra apibrėžiamas kaip vieno C ir vieno papildinio suma.

2s papildymas C

Aukščiau pateiktame paveikslėlyje dvejetainis skaičius yra lygus 00010100, o jo komplementas apskaičiuojamas paverčiant bitą 1 į 0 ir 0 į 1 atvirkščiai. Todėl vieno komplementas tampa 11101011. Apskaičiavę savo komplementą, apskaičiuojame dviejų komplementą prie vieno komplemento pridėdami 1 ir jo rezultatas yra 11101100.

Sukurkime 2s komplemento programą.

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

Išvestis

2s papildymas C

Aukščiau pateiktos programos analizė,

  • Pirmiausia įvedame bitų skaičių ir jis išsaugomas „ n ' kintamasis.
  • Įvedę bitų skaičių, deklaruojame simbolių masyvą, t.y. dvejetainis char[n+1], kuriame yra dvejetainis skaičius. ' n ' yra bitų skaičius, kurį įvedėme ankstesniame žingsnyje; tai iš esmės apibrėžia masyvo dydį.
  • Deklaruojame dar du masyvus, t.y. vieni papildai[n+1] , ir dvikomplementas[n+1]. The vieni papildai[n+1] masyve yra dvejetainio skaičiaus papildinys, o du papildai[n+1] masyvas turi dvejetainio skaičiaus dviejų komplementą.
  • Inicijuoti nešti kintamąjį ir šiam kintamajam priskirkite 1 reikšmę.
  • Po deklaracijų įvedame dvejetainį skaičių.
  • Dabar mes tiesiog apskaičiuojame dvejetainio skaičiaus papildinį. Norėdami tai padaryti, sukuriame a kilpa kuris kartojasi visame dvejetainiame masyve, for(int i=0;i. Cikle for, patikrinama sąlyga, ar bitas yra 1 ar 0. Jei bitas yra 1, tada vienų papildymas[i]=0 Kitas onecomplement[i]=1 . Tokiu būdu sukuriamas dvejetainio skaičiaus papildinys.
  • Apskaičiavę savo komplementą, sugeneruojame dvejetainio skaičiaus 2s komplementą. Norėdami tai padaryti, sukuriame a kilpa kuris kartojasi nuo paskutinio elemento iki pradinio elemento. Cikloje turime tris sąlygas:
    • Jei vienaskomplemento [i] bitas yra 1, o perkėlimo reikšmė yra 1, tada į du komplementą [i] įdedame 0.
    • Jei vienaskomplemento [i] bitas yra 0, o pernešimo reikšmė yra 1, tada į du komplementą [i] įdedame 1, o į nešiojimą - 0.
    • Jei pirmiau pateiktos dvi sąlygos yra klaidingos, tada vienaskomplementas [i] yra lygus dviems komplementams [i].

Ženkliniai sveikieji skaičiai dažnai vaizduojami C, naudojant dviejų komplemento žymėjimas . Naudojant tą patį dvejetainis vaizdavimas siūlo mechanizmą išreikšti abu teigiamas ir neigiami sveikieji skaičiai . The reikšmingiausias bitas (MSB) naudojamas kaip ženklas bitas a dviejų komplemento vaizdavimas , kur 0 žymi a teigiamas sveikasis skaičius , ir 1 žymi a neigiamas skaičius .

Pradedant nuo a neigiamas skaičius absoliučią vertę dvejetaine forma, galite paimti papildymas (bitinis neigimas) tos vertės gauti dviejų papildymas atstovavimas neigiamas sveikasis skaičius . Tu pridėjai 1 prie gaunama vertė įgyti atstovavimą dviejų papildymas .

The dviejų komplemento kodavimas C gali atstovauti pasirašyti sveikieji skaičiai ir gali atlikti greitus aritmetinius veiksmus. Vienas iš dviejų komplemento privalumų yra gebėjimas daryti papildymas ir atimti naudojant tas pačias dvejetaines operacijas kaip ir beženkliams skaičiams.

The dvejetainiai skaičiai pridedami kaip sveikieji skaičiai be ženklų pridedant dviejų papildinį. Pervežimas iš vietos pagrindinė kritinė dalis tiesiog nepaisoma. Dėl šio fakto tvarkymas pasirašyti numeriai kitaip nebūtina, o papildymas tampa paprastas.

Apsvarstykite galimybę pridėti -5 ir -3 naudojant 8 bitų dviejų komplementas atstovavimas, pavyzdžiui:

Dvejetainis skaičius, skirtas -5 yra 11111011.

Dvejetainis skaičius, skirtas -3 yra 11111101 .

atliekant papildymą:

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

Atsakymas yra 111110100 , kuriame dviejų papildymas yra lygus -8 .

Panašiai kaip ir sudėjimas, atimtis gali būti atlikta apdorojant antrasis operandas dviejų papildinys, tarsi tai būtų pridėjimas. Kitaip tariant, prie pirmojo operando pridedate neigiamo skaičiaus dviejų komplementą, kad jį pašalintumėte.

Pavyzdžiui, kada -3 yra atimama iš -5 :

dvejetainiu, -5 atstovauja 11111011 ir -(-3) pateikė 00000011 (dviejų papildymas -3 )

Atimties atlikimas

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

Rezultatas yra 11111110 , kuris dviejų komplemente yra lygus -8 .

Išvada:

C, 2s papildymas yra dvejetainis neigiamo skaičiaus, kuris sukuriamas pridedant vieną prie 1s papildymas . Kompiuterinės sistemos dažnai naudoja šią idėją, kad pavaizduotų pasirašytus skaičius ir efektyviai atliktų aritmetines operacijas.

Norėdami gauti 2s papildymas dvejetainio sveikojo skaičiaus, pirmiausia reikia nustatyti 1s papildymas skaičių apverčiant bitus. Po to, atstovavimas 2s papildymas yra gautas pridedant vieną prie 1s papildymas . The reikšmingiausias bitas (MSB) veiks kaip ženklo bitas, išreikšdamas, ar skaičius yra teigiamas arba neigiamas .

Apskaičiavimas 2s papildymas duotam dvejetainiam sveikajam skaičiui rodoma pridedamoje C programoje. Vartotojas raginamas įvesti abu dvejetainis skaičius ir bitų skaičius. Po to programa atlieka reikiamas procedūras, kad gautų 1s papildymą, o tada 2s papildymas . Tada parodomos išvados.

Informatikos moksle ir programavimo srityje labai svarbu suprasti 2s papildymas vaizdavimas, nes jis leidžia efektyviai valdyti neigiamas reikšmes, išreikštas dvejetainiais. Tai daro sudėjimas, atėmimas , ir loginės operacijos abiem paprasčiau teigiamas ir neigiamus skaičius . Diapazonas atvaizduojami sveikieji skaičiai yra simetriškas nulis dėl 2s papildymas vaizdavimas, todėl tinka įvairioms skaitinėms operacijoms.

Programuotojai gali atlikti aritmetines operacijas, dirbti su dvejetainiais duomenimis ir kurti algoritmus naudodami sveikuosius ženklus C ir kitomis programavimo kalbomis, suprasdami 2s papildymo idėją ir tinkamai ją panaudodami.