logo

Kas ir 2s papildinājums valodā C?

2s komplements C tiek ģenerēts no 1s komplementa C. Kā zināms, bināra skaitļa 1s komplements tiek izveidots, pārveidojot bitu 1 uz 0 un 0 uz 1; bināra skaitļa 2s papildinājums tiek ģenerēts, pievienojot vienu bināra skaitļa 1s papildinājumam.

Īsāk sakot, mēs varam teikt, ka 2s papildinājums C ir definēts kā viena papildinājuma summa C un viens.

2s papildinājums C

Iepriekš redzamajā attēlā binārais skaitlis ir vienāds ar 00010100, un tā papildinājums tiek aprēķināts, pārveidojot bitu 1 uz 0 un 0 uz 1 otrādi. Tāpēc viena komplements kļūst par 11101011. Pēc sava komplementa aprēķināšanas mēs aprēķinām divu komplementu, viena papildinājumam pievienojot 1, un tā rezultāts ir 11101100.

Izveidosim programmu no 2s papildinājuma.

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

Izvade

2s papildinājums C

Iepriekš minētās programmas analīze,

  • Pirmkārt, mēs ievadām bitu skaitu, un tas tiek saglabāts mapē n ' mainīgais.
  • Pēc bitu skaita ievadīšanas mēs deklarējam rakstzīmju masīvu, t.i., binārs raksturs[n+1], kas satur bināro skaitli. ' n ' ir bitu skaits, ko ievadījām iepriekšējā darbībā; tas būtībā nosaka masīva lielumu.
  • Mēs deklarējam vēl divus masīvus, t.i., vienspapildinājums[n+1] , un divikomplements[n+1]. The vienspapildinājums[n+1] masīvs satur bināra skaitļa papildinājumu, savukārt divi komplementi[n+1] masīvs satur bināra skaitļa divu komplementu.
  • Inicializējiet nēsāt mainīgo un piešķiriet šim mainīgajam 1 vērtību.
  • Pēc deklarācijām mēs ievadām bināro skaitli.
  • Tagad mēs vienkārši aprēķinām bināra skaitļa papildinājumu. Lai to izdarītu, mēs izveidojam a cilpa kas atkārtojas visā binārajā masīvā, for(int i=0;i. Ciklā for, tiek pārbaudīts nosacījums, vai bits ir 1 vai 0. Ja bits ir 1, tad onecomplement[i]=0 cits onecomplement[i]=1 . Tādā veidā tiek ģenerēts bināra skaitļa papildinājums.
  • Pēc viena papildinājuma aprēķināšanas mēs ģenerējam bināra skaitļa 2s papildinājumu. Lai to izdarītu, mēs izveidojam a cilpa kas atkārtojas no pēdējā elementa līdz sākuma elementam. Ciklā mums ir trīs nosacījumi:
    • Ja vienskomplementa [i] bits ir 1 un pārnesuma vērtība ir 1, tad divos papildinājumos [i] ievietojam 0.
    • Ja vienskomplementa [i] bits ir 0 un pārnesuma vērtība ir 1, tad divos komplementā [i] ievietojam 1 un pārnesumā 0.
    • Ja iepriekš minētie divi nosacījumi ir nepatiesi, tad onecomplement [i] ir vienāds ar twoscomplement [i].

Parakstīti veseli skaitļi bieži tiek attēloti C, izmantojot divu komplementa apzīmējums . Izmantojot to pašu binārais attēlojums piedāvā mehānismu, lai izteiktu abus pozitīvs un negatīvi veseli skaitļi . The nozīmīgākais bits (MSB) tiek izmantots kā parakstīt bitu iekšā divu komplementa attēlojums , kur 0 apzīmē a pozitīvs vesels skaitlis , un 1 apzīmē a negatīvs skaitlis .

Sākot ar a negatīvs skaitlis absolūtā vērtība binārā formā, varat izmantot viens papildinājums (bitu noliegums) no šīs vērtības, lai iegūtu divu papildinājums pārstāvība negatīvs vesels skaitlis . Jūs pievienojat 1 uz iegūtā vērtība iegūt pārstāvību divu papildinājums .

The divu komplementa kodējums C var attēlot veseli skaitļi un var veikt ātras aritmētiskas darbības. Viens ieguvums, izmantojot divu komplementu, ir spēja darīt papildinājums un atņemšana izmantojot tās pašas binārās darbības kā neparakstītiem skaitļiem.

The binārie skaitļi tiek saskaitīti kā neparakstīti veseli skaitļi pievienojot divu papildinājumu. Pārnesums no atrašanās vietas galvenais kritiskais bits tiek vienkārši ignorēts. Sakarā ar šo faktu apstrāde parakstītus numurus savādāk nav nepieciešams, un pievienošana kļūst vienkārša.

Apsveriet pievienošanu -5 un -3 izmantojot 8 bitu divu papildinājums pārstāvība, piemēram:

Binārais skaitlis -5 ir 11111011.

Binārais skaitlis -3 ir 11111101 .

veicot pievienošanu:

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

Atbilde ir 111110100 , kas iekšā divu papildinājums ir vienāds ar -8 .

Līdzīgi kā saskaitīšana, atņemšanu var veikt, apstrādājot otrais operands divu papildinājums, it kā tas būtu saskaitījums. Citiem vārdiem sakot, jūs pievienojat negatīva skaitļa divu papildinājumu pirmajam operandam, lai to noņemtu.

Piemēram, kad -3 tiek atņemts no -5 :

Bināros, -5 pārstāv 11111011 un -(-3) autors 00000011 (divu papildinājums -3 )

Atņemšanas veikšana

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

Rezultāts ir 11111110 , kas divu papildinājumā ir vienāds ar -8 .

Secinājums:

C valodā 2s papildinājums ir negatīva skaitļa binārs attēlojums, kas tiek izveidots, pievienojot vienu skaitlim 1s papildinājums . Datorsistēmas bieži izmanto šo ideju, lai attēlotu skaitļus ar zīmēm un efektīvi veiktu aritmētiskās darbības.

Lai iegūtu 2s papildinājums bināra vesela skaitļa, vispirms ir jānosaka 1s papildinājums no skaitļa, pagriežot bitus. Pēc tam, pārstāvība 2s papildinājums tiek iegūts ar pievienojot vienu uz 1s papildinājums . The nozīmīgākais bits (MSB) darbosies kā zīmes bits, izsakot, vai skaitlis ir pozitīvs vai negatīvs .

Aprēķins par 2s papildinājums dotajam bināram veselam skaitlim ir parādīts pievienotajā C programmā. Lietotājam tiek piedāvāts ievadīt gan binārais skaitlis un bitu skaits. Pēc tam programma veic nepieciešamās procedūras, lai iegūtu 1s papildinājumu un pēc tam 2s papildinājums . Pēc tam tiek parādīti atklājumi.

Datorzinātnēs un programmēšanā ir ļoti svarīgi saprast 2s papildinājums attēlojums, jo tas ļauj efektīvi apstrādāt negatīvās vērtības, kas izteiktas bināri. Tas padara saskaitīšana, atņemšana , un loģiskās operācijas vienkāršāk abiem pozitīvs un negatīvi skaitļi . Diapazons reprezentējami veseli skaitļi ir simetrisks par nulle dēļ 2s papildinājums attēlojumu, padarot to piemērotu dažādām skaitliskām darbībām.

Programmētāji var veikt aritmētiskas darbības, strādāt ar bināriem datiem un izstrādāt algoritmus, izmantojot zīmju veselus skaitļus C un citās programmēšanas valodās, izprotot ideju par 2s papildinājumu un pareizi to izmantojot.