Edellisessä osiossa opimme, kuinka voimme suorittaa aritmeettisia operaatioita, kuten yhteen- ja vähennyslaskua käyttämällä ykkösen komplementtia. Tässä osiossa opimme suorittamaan nämä toiminnot käyttämällä 2:n komplementtia.
Etsi kartalta c++
Lisäys 2:n komplementilla
On kolme eri tapausta mahdollista, kun lisäämme kaksi binaarilukua käyttämällä 2:n komplementtia, joka on seuraava:
Tapaus 1: Positiivisen luvun lisääminen negatiiviseen numeroon, kun positiivisen luvun suuruus on suurempi.
Etsi aluksi annetun negatiivisen luvun 2:n komplementti. Summa annetulla positiivisella luvulla. Jos saamme lopun siirtoarvon 1, luku on positiivinen luku ja siirtobitti hylätään ja loput bitit ovat lopputulos.
Esimerkki: 1101 ja -1001
- Etsi ensin negatiivisen luvun 1001 2:n komplementti. Joten luvun 2:n komplementin löytämiseksi muuta kaikki 0:t 1:ksi ja kaikki 1:t 0:ksi tai etsi luvun 1001 1:n komplementti. Numeron 1001 1:n komplementti on 0110, ja lisää 1 tuloksen 0110 LSB:hen. Joten luvun 1001 2:n komplementti on 0110+1=0111
- Lisää molemmat numerot, eli 1101 ja 0111;
1101+0111=1 0100 - Lisäämällä molemmat numerot, saamme lopun siirto 1. Hylkäämme lopun siirto. Joten molempien numeroiden yhteenlaskettu summa on 0100.
Tapaus 2: Positiivisen arvon lisääminen negatiiviseen arvoon, kun negatiivinen luku on suurempi.
Lisää aluksi positiivinen arvo negatiivisen luvun 2:n komplementtiarvoon. Täällä ei löydy lopullista kantamista. Joten otamme tuloksen 2:n komplementin saadaksemme lopullisen tuloksen.
Huomautus: Resultantti on negatiivinen arvo.
Esimerkki: 1101 ja -1110
- Etsi ensin negatiivisen luvun 1110 2:n komplementti. Joten saadaksesi 2:n komplementin lisää 1 sen 1:n komplementtiarvon 0001 LSB:hen.
0001+1=0010 - Lisää molemmat numerot, eli 1101 ja 0010;
1101+0010= 1111 - Etsi tuloksen 1110 2:n komplementti, joka on lopputulos. Tuloksen 1110 2:n komplementti on siis 0001, ja lisää luvun eteen negatiivinen etumerkki, jotta voimme tunnistaa sen olevan negatiivinen luku.
Tapaus 3: Kahden negatiivisen luvun lisääminen
Tässä tapauksessa etsi ensin molempien negatiivisten lukujen 2:n komplementti ja sitten lisäämme nämä molemmat komplementtiluvut. Tässä tapauksessa saamme aina lopputuloksen, joka lisätään LSB:hen, ja unohdamme lopputuloksen, otamme tuloksesta the2:n komplementin.
Huomautus: Resultantti on negatiivinen arvo.
Esimerkki: -1101 ja -1110 viisibittisessä rekisterissä
- Ensin etsitään negatiivisten lukujen 01101 ja 01110 2:n komplementti. Joten 2:n komplementin löytämiseksi lisäämme 1 näiden lukujen 1:n komplementin LSB:hen. 2:n luvun 01110 komplementti on 10010 ja 01101 on 10011.
- Lisäämme molemmat komplementtiluvut, eli 10001 ja 10010;
10010+10011= 1 00101 - Lisäämällä molemmat luvut saamme lopputuloksen 1. Tämä siirto hylätään ja lopputuloksena on tuloksen 00101 2:n komplementti. Joten tuloksen 00101 2:n komplementti on 11011 ja lisäämme negatiivisen merkki ennen numeroa, jotta voimme tunnistaa, että se on negatiivinen luku.
Vähennys 2:n komplementilla
Nämä ovat seuraavat vaiheet kahden binääriluvun vähentämiseksi käyttämällä 2:n komplementtia
- Etsi ensimmäisessä vaiheessa aliosan 2:n komplementti.
- Lisää komplementtinumero minuendin kanssa.
- Jos saamme kantomäärän lisäämällä molemmat luvut, hylkäämme tämän kuljetuksen ja tulos on positiivinen, muuten otetaan tuloksen 2:n komplementti, joka on negatiivinen.
Esimerkki 1: 10101 - 00111
Otetaan 2:n komplementti aliarvosta 00111, joka on 11001. Summaa ne nyt. Niin,
10101+11001 =1 01110.
Yllä olevassa tuloksessa saamme siirtobitin 1. Joten hylkäämme tämän siirtobitin ja jäljelle jää lopputulos ja positiivinen luku.
Esimerkki 2: 10101-10111
Otetaan 2:n komplementti aliosasta 10111, josta tulee 01001. Nyt lisätään molemmat luvut. Niin,
10101+01001 =11110.
Yllä olevassa tuloksessa emme saaneet kantopalaa. Laske siis tuloksen 2:n komplementti, eli 00010. Se on negatiivinen luku ja lopullinen vastaus.