In onze vorige sectie hebben we geleerd hoe we rekenkundige bewerkingen, zoals optellen en aftrekken, kunnen uitvoeren met behulp van het 1-complement. In deze sectie zullen we leren deze bewerkingen uit te voeren met behulp van het 2-complement.
vang en probeer Java
Optelling met behulp van 2-complement
Er zijn drie verschillende gevallen mogelijk wanneer we twee binaire getallen optellen met behulp van het 2-complement, en dat is als volgt:
Geval 1: Optelling van het positieve getal met een negatief getal wanneer het positieve getal een grotere omvang heeft.
Zoek eerst het 2-complement van het gegeven negatieve getal. Tel op met het gegeven positieve getal. Als we de end-around carry 1 krijgen, is het getal een positief getal en wordt de carry-bit weggegooid en zijn de resterende bits het eindresultaat.
Voorbeeld: 1101 en -1001
- Zoek eerst het 2-complement van het negatieve getal 1001. Dus, om het 2-complement te vinden, verander alle 0 in 1 en alle 1 in 0 of vind het 1-complement van het getal 1001. Het 1-complement van het getal 1001 is 0110, en tel 1 op bij de LSB van het resultaat 0110. Dus het 2-complement van getal 1001 is 0110+1=0111
- Voeg beide nummers toe, dat wil zeggen 1101 en 0111;
1101+0111=1 0100 - Door beide getallen op te tellen, krijgen we de end-around carry 1. We gooien de end-around carry weg. De optelling van beide getallen is dus 0100.
Geval 2: Optelling van de positieve waarde met een negatieve waarde wanneer het negatieve getal een hogere grootte heeft.
Voeg in eerste instantie een positieve waarde toe met de 2-complementwaarde van het negatieve getal. Hier wordt geen end-around carry gevonden. We nemen dus het 2-complement van het resultaat om het eindresultaat te krijgen.
Opmerking: de resultante is een negatieve waarde.
Voorbeeld: 1101 en -1110
- Zoek eerst het 2-complement van het negatieve getal 1110. Dus, om het 2-complement te vinden, tel je 1 op bij de LSB van zijn 1-complementwaarde 0001.
0001+1=0010 - Voeg beide nummers toe, dat wil zeggen 1101 en 0010;
1101+0010= 1111 - Zoek het 2-complement van het resultaat 1110 dat het eindresultaat is. Het 2-complement van het resultaat 1110 is dus 0001, en voeg een negatief teken toe vóór het getal, zodat we kunnen vaststellen dat het een negatief getal is.
Geval 3: Optelling van twee negatieve getallen
In dit geval zoeken we eerst het 2-complement van beide negatieve getallen, en dan tellen we beide complementgetallen op. In dit geval krijgen we altijd de end-around carry, die aan de LSB wordt toegevoegd, en als we het eindresultaat vergeten, nemen we het 2-complement van het resultaat.
Opmerking: de resultante is een negatieve waarde.
Voorbeeld: -1101 en -1110 in vijf-bits register
- Zoek eerst het 2-complement van de negatieve getallen 01101 en 01110. Dus om het 2-complement te vinden, tellen we 1 op bij de LSB van het 1-complement van deze getallen. 2's complement van het getal 01110 is 10010, en 01101 is 10011.
- We voegen beide complementnummers toe, dat wil zeggen 10001 en 10010;
10010+10011= 1 00101 - Door beide getallen op te tellen, krijgen we de end-around carry 1. Deze carry wordt weggegooid en het eindresultaat is het 2.s-complement van het resultaat 00101. Het 2-complement van het resultaat 00101 is dus 11011, en we voegen een negatief getal toe. teken vóór het getal, zodat we kunnen vaststellen dat het een negatief getal is.
Aftrekken met behulp van 2-complement
Dit zijn de volgende stappen om twee binaire getallen af te trekken met behulp van het 2-complement
- Zoek in de eerste stap het 2-complement van de aftrekker.
- Voeg het complementnummer toe met de minuend.
- Als we de carry krijgen door beide getallen op te tellen, dan gooien we deze carry weg en is het resultaat positief. Anders nemen we het 2-complement van het resultaat, wat negatief zal zijn.
Voorbeeld 1: 10101 - 00111
We nemen het 2-complement van aftrekker 00111, dat is 11001. Tel ze nu bij elkaar op. Dus,
10101+11001 =1 01110.
In het bovenstaande resultaat krijgen we de carry-bit 1. Dus we gooien deze carry-bit weg en het eindresultaat is een positief getal.
Voorbeeld 2: 10101 - 10111
We nemen het 2-complement van aftrekker 10111, wat uitkomt op 01001. Nu tellen we beide getallen op. Dus,
10101+01001 =11110.
In het bovenstaande resultaat hebben we het carry-bit niet gekregen. Bereken dus het 2-complement van het resultaat, dat wil zeggen 00010. Het is het negatieve getal en het uiteindelijke antwoord.