logo

Hvad er 2s komplementet i C?

2'er komplementet i C genereres ud fra 1'er komplementet i C. Som vi ved, er 1'er komplementet af et binært tal skabt ved at transformere bit 1 til 0 og 0 til 1; 2s komplementet af et binært tal genereres ved at lægge en til 1s komplementet af et binært tal.

Kort sagt kan vi sige, at 2s komplementet i C er defineret som summen af ​​ens komplement i C og et.

2s komplement i C

I ovenstående figur er det binære tal lig med 00010100, og dets ens komplement beregnes ved at transformere bit 1 til 0 og 0 til 1 omvendt. Derfor bliver ens komplement 11101011. Efter at have beregnet ens komplement, beregner vi de tos komplement ved at lægge 1 til ens komplement, og dets resultat er 11101100.

Lad os oprette et program med 2s komplement.

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

Produktion

2s komplement i C

Analyse af ovenstående program,

  • Først indtaster vi antallet af bit, og det bliver gemt i ' n ' variabel.
  • Efter at have indtastet antallet af bit, erklærer vi tegnarray, dvs. char binær[n+1], som indeholder det binære tal. Det ' n ' er antallet af bits, som vi indtastede i det foregående trin; det definerer dybest set størrelsen af ​​arrayet.
  • Vi erklærer yderligere to arrays, dvs. et-komplement[n+1] , og tokomplement[n+1]. Det et-komplement[n+1] array indeholder et-komplementet af et binært tal, mens tokomplement[n+1] array indeholder de tos komplement af et binært tal.
  • Initialiser bære variabel og tildel 1 værdi til denne variabel.
  • Efter erklæringer indtaster vi det binære tal.
  • Nu beregner vi blot ens komplement til et binært tal. For at gøre dette opretter vi en sløjfe der itererer gennem det binære array, for(int i=0;i. I for loop kontrolleres betingelsen om bit er 1 eller 0. Hvis bit er 1 så onescomplement[i]=0 andet onescomplement[i]=1 . På denne måde genereres ens komplement af et binært tal.
  • Efter at have beregnet ens komplement, genererer vi 2s komplementet af et binært tal. For at gøre dette opretter vi en sløjfe der itererer fra det sidste element til startelementet. I for loop har vi tre betingelser:
    • Hvis bit af onescomplement[i] er 1 og værdien af ​​carry er 1, så sætter vi 0 i twocomplement[i].
    • Hvis bit af oneskomplement[i] er 0 og værdien af ​​carry er 1, så sætter vi 1 i tokomplement[i] og 0 i carry.
    • Hvis de to ovenstående betingelser er falske, så er et-komplement[i] lig med to-komplement[i].

Signerede heltal er ofte repræsenteret i C ved hjælp af tos komplementnotation . Bruger det samme binær repræsentation tilbyder en mekanisme til at udtrykke begge dele positiv og negative heltal . Det mest signifikante bit (MSB) bruges som tegn bit i en tos komplementrepræsentation , hvor 0 betegner a positivt heltal , og 1 betegner a negativt tal .

Starter med en negative tal absolut værdi i binær form, kan du tage ens komplement (bitvis negation) af den værdi for at få tos komplement repræsentation af negativt heltal . Du tilføjer 1 til resulterende værdi at erhverve repræsentationen af tos komplement .

Det to's komplement-kodning i C kan repræsentere signerede heltal og kan udføre hurtige aritmetiske operationer. En fordel ved at ansætte tos komplement er evnen til at gøre tilføjelse og subtraktion ved at bruge de samme binære operationer som for tal uden fortegn.

Det binære tal lægges sammen som heltal uden fortegn når du tilføjer to's komplement. En udførelse fra placeringen af vigtigste kritiske bit er bare tilsidesat. På grund af dette faktum, håndtering underskrevne numre anderledes er ikke nødvendigt, og addition bliver enkel.

Overvej at tilføje -5 og -3 bruger 8-bit to-komplement repræsentation, for eksempel:

Binært tal for -5 er 11111011.

Binært tal for -3 er 11111101 .

udfører tilføjelsen:

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

Svaret er 111110100 , som i tos komplement er lig med -8 .

I lighed med addition kan subtraktion udføres ved at behandle anden operand to's komplement, som om det var addition. Med andre ord tilføjer du de tos komplement af et negativt tal til den første operand for at fjerne den.

For eksempel hvornår -3 trækkes fra -5 :

I binær, -5 er repræsenteret ved 11111011 og -(-3) ved 00000011 (tos komplement til -3 )

Udførelse af subtraktion

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

Resultatet er 11111110 , som i tos komplement er lig med -8 .

Konklusion:

I C, den 2s komplement er en binær repræsentation af et negativt tal, der skabes ved at lægge en til 1s komplement . Computersystemer anvender ofte denne idé til at repræsentere signerede tal og effektivt udføre aritmetiske operationer.

For at få 2s komplement af et binært heltal, skal man først bestemme 1s komplement af tallet ved at vende bitsene. Derefter vil repræsentationen af 2s komplement er opnået af tilføjer en til 1s komplement . Det mest signifikante bit (MSB) vil fungere som en fortegnsbit ved at udtrykke, om et tal er positiv eller negativ .

Beregningen af 2s komplement for et givet binært heltal er vist i det vedhæftede C-program. Brugeren bliver bedt om at indtaste både binært tal og antallet af bits. Derefter udfører programmet de nødvendige procedurer for at erhverve 1s-komplementet, og derefter 2s komplement . Resultaterne vises derefter.

I datalogi og programmering er det afgørende at forstå 2s komplement repræsentation, da det gør det muligt at håndtere negative værdier udtrykt i binært effektivt. Det gør addition, subtraktion , og logiske operationer enklere på begge positiv og negative tal . Udvalget af repræsentative heltal er symmetrisk omkring nul på grund af den 2s komplement repræsentation, hvilket gør den velegnet til forskellige numeriske operationer.

Programmører kan udføre aritmetiske operationer, arbejde med binære data og designe algoritmer ved hjælp af signerede heltal i C og andre programmeringssprog ved at forstå ideen om 2s-komplement og bruge det korrekt.