vuoi
o PayPal
tutte le volte che vuoi
Complemento a due
Il complemento a due è una delle possibili rappresentazioni dei numeri con segno in informatica (è la rappresentazione maggiormente utilizzata nei calcolatori). A differenza ad esempio della rappresentazione MS (Modulo e segno) che permette di rappresentare numeri compresi nell'intervallo (-2^n-1, 2^n-1), nella rappresentazione con complemento a due invece è possibile rappresentare numeri nell'intervallo [-2^n-1, 2^n-1+1]. Per esempio, con n=4 (bit), l'intervallo nella rappresentazione MS sarebbe (-8, 8) con estremi non compresi, mentre nella rappresentazione con complemento a due sarebbe [-8, 7] con estremi compresi. Questa differenza è dovuta al fatto che nella rappresentazione MS, esistono due zeri: quello positivo (ovvero tutti i bit pari a 0 compreso quello del segno) e quello negativo (tutti i bit a 0 tranne quello del segno pari a 1). Al contrario, nella rappresentazione mediante complemento a due esiste un solo 0. Per poter effettuare la rappresentazione con complemento a due...Si può procedere in due possibili modi: 1) Utilizzare la formula (2 - |N|) Questo metodo è effettuabile solamente se si intende ottenere immediatamente un numero negativo rappresentato in base 2 complemento a due. Infatti per ottenere attraverso questo metodo il numero opposto (positivo), bisognerà invertire tutti i bit e sommare un 1. Esempio: N = -29 n = ГLog (30)Ⴈ + 12 = Г4,1Ⴈ + 1 = 6 n = 6 (2 - |N|) = (2 - 29) = 64 - 29 = 35 2) Procedere con il metodo delle divisioni ripetute per ottenere il numero in rappresentazione in base 2 complemento a due Questo metodo può essere utilizzato per convertire un numero in rappresentazione binaria, sia esso positivo o negativo. Esempio: N = -29 n = ГLog (30)Ⴈ + 12 = Г4,1Ⴈ + 1 = 6 n = 6 1) Considerare il modulo del numero dato N = -29 N = |N| = 29 2) Effettuare il metodo delle divisioni ripetute per trovare il numero dato convertito in rappresentazione binaria 35 ÷ 2 = 17 resto 1 17 ÷ 2 = 8 resto 1 8 ÷ 2 = 4 resto 0 4 ÷ 2 = 2 resto 0 2 ÷ 2 = 1 resto 0 1 ÷ 2 = 0 resto 1 Numero binario: 100011 3) Aggiungere uno 0 davanti al numero binario appena ottenuto Numero binario: 0100011 4) Opzionale) Nel caso in cui si voglia rappresentare un numero negativo occorre anche andare ad invertire i bit e sommargli un bit pari a 1 Numero binario: 1100011 Quindi, -29 in base 2 complemento a due è rappresentato come 1100011. Tosetti Luca22/09/2020Complemento a due4 2 02 2 01 2 10Nel caso in cui si voglia ottenere la rappresentazione di +29 e non -29occorre:100011
Calcolare opposto 011100
+→ → 1 =011101
+29→2CP2 102) N b R29 2 114 2 0 0 1 2 37 2 1 =11101
011101 * 2 + 0 * 2 + 1 * 2 + 1 * 2 + 1 *→ →12CP24 52 + 0 * 2 = 29 103 2 11 2 10Nel caso in cui si voglia ottenere la rappresentazione di -29 e non +29occorre:011101
Calcolare opposto 100010
+→ → 1 =100011
-29→2CP2 10In alcuni casi durante le operazioni con numeri in base 2, può essere necessarioandare ad aumentare o diminuire il numero di bit relativi alla rappresentazione di unnumero in base alle esigenze (tendenzialmente si aumentano il numero di bit con iquali viene rappresentato il numero in binario).Nel caso di aumento bit:Se il bit più significativo è lo 0, vengono aggiunti tanti 0 quanti sono necessariper raggiungere lo stesso numero di bit con i quali è rappresentato l'altro numero binarioSe il bit
Il più significativo è l’1, vengono aggiunti tanti 1 quanti sono necessari per raggiungere lo stesso numero di bit con i quali è rappresentato l’altro numero binario
- 010101 6 bit
- 00010101 8 bit
- 100101 6 bit
- 11100101 8 bit
Tosetti Luca 22/09/2020
Complemento a due
Nel caso di diminuzione dei bit:
Si tolgono i bit più significativi uguali tra di loro lasciando tra questi quello meno significativo
- 00010101 8 bit
- 010101 6 bit
- 11100101 8 bit
- 100101 6 bit
Ovviamente è possibile effettuare operazioni tra numeri rappresentati in base 2 complemento a due:
Addizione: È uguale all’addizione tra i numeri naturali e alla normale addizione tra numeri binari già vista in precedenza.
A = (77) 10
B = (-100) 10
n = ГLog (78)Ⴈ + 1 = 81 2
n = ГLog (101)Ⴈ + 1 = 81 2
1 1 1
A 010 0 1 101 + 73
B 10011100 = -10011101001 -270
1 2 3 4 5 6 7
1 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 + 1 * 2 + 1 * 2 - 1 * 2 =
1+8+32+64-128= -23
Sottrazione:
Nel caso della sottrazione si può semplicemente procedere andando a fare la somma tra il primo numero e l'opposto del secondo numero. A - B = A + (-B) A = (77)10 B = (-100)10 Calcoliamo l'opposto di B con il complemento a 2: 1 110011100 + 011000 1 1 + 1 = 0 1100100 -B = 100 A - B = 77 - 100 = -23