Salta al contenuto
Note per Studenti Rappresentazione dei numeri interi con segno

Rappresentazione dei numeri interi con segno

In questa pagina 6

Con nn bit si hanno 2n2^n configurazioni. Per gli interi senza segno vanno da 00 a 2n−12^n - 1 (vedi Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali →); per rappresentare anche i negativi si sceglie una convenzione. In tutte le convenzioni sotto, l'intervallo è circa [−2n−1,2n−1][-2^{n-1}, 2^{n-1}].

Modulo e segno

Il bit più significativo è il segno (0 = positivo, 1 = negativo), gli altri n−1n-1 bit sono il modulo.

  • 8 bit: +5=0000 0101+5 = 0000\,0101, −5=1000 0101-5 = 1000\,0101.
  • Intervallo: [−(2n−1−1), 2n−1−1][-(2^{n-1}-1),\ 2^{n-1}-1] (8 bit: −127…127-127 \dots 127).
  • Difetti: due zeri (0000 00000000\,0000 e 1000 00001000\,0000) e la somma richiede circuiti diversi a seconda dei segni.

Complemento a 1

Il negativo −x-x si ottiene invertendo tutti i bit di xx.

  • 8 bit: +5=0000 0101+5 = 0000\,0101, −5=1111 1010-5 = 1111\,1010.
  • Intervallo come modulo e segno, ancora con due zeri (0000 00000000\,0000 e 1111 11111111\,1111).
  • Nella somma il riporto in uscita va risommato al risultato (end-around carryriporto che esce dal bit più significativo e viene aggiunto al bit meno significativo).

Complemento a 2

È la rappresentazione usata da tutti i processori. Il bit più significativo ha peso negativo:

x=−cn−1 2n−1+∑i=0n−2ci 2ix = -c_{n-1}\, 2^{n-1} + \sum_{i=0}^{n-2} c_i \, 2^i

Equivalentemente: un negativo −x-x è rappresentato dal numero senza segno 2n−x2^n - x.

Opposto (vale in entrambi i versi): si invertono tutti i bit e si somma 1.

+20=0001 0100 →inverto 1110 1011 →+1 1110 1100=−20+20 = 0001\,0100 \ \xrightarrow{\text{inverto}}\ 1110\,1011 \ \xrightarrow{+1}\ 1110\,1100 = -20

Scorciatoia: partendo da destra si copiano i bit fino al primo 1 compreso, poi si invertono tutti gli altri (0001 0100‾→1110 1100‾0001\,0\underline{100} \to 1110\,1\underline{100}).

Da complemento a 2 a decimale. Se MSB = 0 si legge come senza segno. Se MSB = 1 si usa il peso negativo:

1110 1100=−128+64+32+8+4=−201110\,1100 = -128 + 64 + 32 + 8 + 4 = -20

oppure si calcola l'opposto (0001 0100=200001\,0100 = 20) e si mette il meno.

Caso limite: l'opposto di −128=1000 0000-128 = 1000\,0000 a 8 bit è ancora 1000 00001000\,0000: +128+128 non è rappresentabile.

Estensione del segno. Per passare da nn a m>nm > n bit si replica il bit di segno a sinistra: −20-20 su 8 bit 1110 11001110\,1100 diventa su 16 bit 1111 1111 1110 11001111\,1111\,1110\,1100; +20+20 diventa 0000 0000 0001 01000000\,0000\,0001\,0100. Serve per esempio quando il processore carica un byte con segno in un registro a 32 bit.

Esercizio svolto in aula: Esercizio 1 · conversioni in complemento a 2 su 4 bit.

Eccesso K (polarizzazione)

Si memorizza x+Kx + K come intero senza segno; di solito K=2n−1K = 2^{n-1} o 2n−1−12^{n-1}-1.

Confronto su 4 bit

Bit Senza segno Modulo e segno Compl. a 1 Compl. a 2 Eccesso 8
0000 0 +0 +0 0 −8
0011 3 +3 +3 +3 −5
0111 7 +7 +7 +7 −1
1000 8 −0 −7 −8 0
1011 11 −3 −4 −5 +3
1111 15 −7 −0 −1 +7

La stessa sequenza di bit ha significati diversi: il valore dipende dalla convenzione con cui la si legge.

Errori tipici

  • Calcolare l'opposto in complemento a 2 invertendo i bit senza sommare 1 (si ottiene il complemento a 1).
  • Estendere un negativo aggiungendo zeri a sinistra: 1110 1100→0000 0000 1110 11001110\,1100 \to 0000\,0000\,1110\,1100 vale +236+236, non −20-20.
  • Dimenticare l'asimmetria: con 8 bit il minimo è −128-128, il massimo +127+127.

Versione ripasso

Con nn bit ci sono 2n2^n configurazioni; senza segno da 00 a 2n−12^n - 1 (Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali →).

Convenzioni

Complemento a 2: operazioni

  • Opposto: inverti i bit e somma 1: 0001 0100→1110 1011→1110 1100=−200001\,0100 \to 1110\,1011 \to 1110\,1100 = -20. Scorciatoia: da destra si copiano i bit fino al primo 1 compreso, poi si invertono gli altri.
  • A decimale: 1110 1100=−128+64+32+8+4=−201110\,1100 = -128 + 64 + 32 + 8 + 4 = -20. Caso limite: l'opposto di −128=1000 0000-128 = 1000\,0000 è 1000 00001000\,0000.
  • Estensione del segno: si replica il MSB: −20-20 su 16 bit 1111 1111 1110 11001111\,1111\,1110\,1100.
  • Esercizio: Esercizio 1 · conversioni in complemento a 2 su 4 bit.
  • Su 4 bit 1000: 8 senza segno, −0-0, −7-7, −8-8, eccesso 8 00 (modulo-segno, compl. a 1, compl. a 2).

Errori tipici: invertire senza sommare 1; estendere un negativo con zeri (1110 1100→0000 0000 1110 1100=+2361110\,1100 \to 0000\,0000\,1110\,1100 = +236); dimenticare l'asimmetria.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata