U našem prethodnom odjeljku naučili smo kako možemo izvoditi aritmetičke operacije kao što su zbrajanje i oduzimanje koristeći komplement 1. U ovom odjeljku naučit ćemo izvoditi ove operacije pomoću komplementa 2.
pronaći u nizu c++
Zbrajanje pomoću komplementa 2
Postoje tri različita moguća slučaja kada zbrajamo dva binarna broja pomoću komplementa 2, a to je kako slijedi:
Slučaj 1: Zbrajanje pozitivnog broja s negativnim brojem kada pozitivni broj ima veću veličinu.
Prvo pronađite komplement 2 zadanog negativnog broja. Zbrojite sa zadanim pozitivnim brojem. Ako dobijemo end-around prijenos 1 tada će broj biti pozitivan broj i prijenosni bit će biti odbačen, a preostali bitovi su konačni rezultat.
Primjer: 1101 i -1001
- Prvo pronađite komplement 2 negativnog broja 1001. Dakle, da biste pronašli komplement 2, promijenite sve 0 u 1 i sve 1 u 0 ili pronađite komplement 1 broja 1001. Komplement 1 broja 1001 je 0110, a dodajte 1 LSB-u rezultata 0110. Dakle, komplement 2 broja 1001 je 0110+1=0111
- Zbrojite oba broja, tj. 1101 i 0111;
1101+0111=1 0100 - Zbrajanjem oba broja dobivamo end-around prijenos 1. End-around prijenos odbacujemo. Dakle, zbrajanje oba broja je 0100.
Slučaj 2: Zbrajanje pozitivne vrijednosti s negativnom vrijednošću kada negativni broj ima veću veličinu.
U početku dodajte pozitivnu vrijednost s vrijednošću komplementa 2 negativnog broja. Ovdje nije pronađeno prijenos oko kraja. Dakle, uzimamo komplement 2 rezultata da dobijemo konačni rezultat.
Napomena: Rezultat je negativna vrijednost.
Primjer: 1101 i -1110
- Prvo pronađite komplement dvojke negativnog broja 1110. Dakle, za pronalaženje komplementa dvojke dodajte 1 LSB-u njegove vrijednosti komplementa jedinice 0001.
0001+1=0010 - Zbrojite oba broja, tj. 1101 i 0010;
1101+0010= 1111 - Nađite komplement 2 rezultata 1110 koji je konačni rezultat. Dakle, komplement 2 rezultata 1110 je 0001 i dodajte negativan predznak ispred broja kako bismo mogli identificirati da je to negativan broj.
Slučaj 3: Zbrajanje dvaju negativnih brojeva
U ovom slučaju, prvo pronađite komplement 2 za oba negativna broja, a zatim ćemo zbrojiti oba ova komplementna broja. U ovom slučaju, uvijek ćemo dobiti end-around prijenos, koji će biti dodan LSB-u, a zaboravimo konačni rezultat, uzet ćemo komplement rezultata the2.
Napomena: Rezultat je negativna vrijednost.
Primjer: -1101 i -1110 u pet-bitnom registru
- Najprije pronađite komplement 2 negativnih brojeva 01101 i 01110. Dakle, da bismo pronašli komplement 2, dodajemo 1 LSB-u komplementa 1 ovih brojeva. Komplement 2 broja 01110 je 10010, a 01101 je 10011.
- Zbrajamo oba komplementna broja, tj. 10001 i 10010;
10010+10011= 1 00101 - Zbrajanjem oba broja, dobivamo end-around prijenos 1. Ovaj prijenos se odbacuje i konačni rezultat je komplement 2.s rezultata 00101. Dakle, komplement 2 rezultata 00101 je 11011, a mi dodajemo negativan znak ispred broja kako bismo mogli prepoznati da se radi o negativnom broju.
Oduzimanje pomoću komplementa 2
Ovo su sljedeći koraci za oduzimanje dva binarna broja pomoću komplementa 2
- U prvom koraku pronađite komplement 2 subtrahenda.
- Zbrojite komplementni broj s umanjenicom.
- Ako prijenos dobijemo zbrajanjem oba broja, tada odbacujemo ovaj prijenos i rezultat je pozitivan, inače uzimamo komplement 2 rezultata koji će biti negativan.
Primjer 1: 10101 - 00111 (prikaz, stručni).
Uzimamo komplement 2 od subtrahenda 00111, što je 11001. Sada ih zbrojite. Tako,
10101+11001 =1 01110.
U gornjem rezultatu dobivamo prijenosni bit 1. Dakle, odbacujemo ovaj prijenosni bit i ostaje konačni rezultat i pozitivan broj.
Primjer 2: 10101 - 10111 (prikaz, stručni).
Uzimamo komplement 2 od subtrahenda 10111, što daje 01001. Sada zbrajamo oba broja. Tako,
10101+01001 =11110.
U gornjem rezultatu, nismo dobili prijenosni bit. Dakle, izračunajte komplement 2 rezultata, tj. 00010. To je negativan broj i konačni odgovor.