Rappresentazione dei Numeri Relativi PDF
Document Details
Uploaded by WealthyPalmTree
Università degli Studi di Napoli Federico II
Tags
Summary
This document explains different ways to represent positive and negative numbers in a computer, focusing on methods like sign and magnitude, two's complement, and excess representation. It details how these representations work, covering examples and concepts. The information is focused on data representation concepts within computing and programming contexts.
Full Transcript
- **RAPPRESENTAZIONE DEI NUMERI RELATIVI** Per i numeri relativi, ovvero tutti i numeri interi, positivi e negativi (incluso lo 0), si utilizzano diverse rappresentazioni, con lo scopo di creare circuiti in grado di fare operazioni aritmetiche efficientemente. SEGNO E MODULO...
- **RAPPRESENTAZIONE DEI NUMERI RELATIVI** Per i numeri relativi, ovvero tutti i numeri interi, positivi e negativi (incluso lo 0), si utilizzano diverse rappresentazioni, con lo scopo di creare circuiti in grado di fare operazioni aritmetiche efficientemente. SEGNO E MODULO Poiché il segno assume due soli valori ("+" oppure "--"), allora lo si può codificare con un singolo bit, utilizzando il bit più significativo (0 positivo 1 negativo). Quindi, con N bit, N -- 1 di essi vengono attribuiti alla rappresentazione del valore assoluto del numero, e il bit più a sinistra (MSB) alla rappresentazione del segno. Tale rappresentazione permette di codificare i numeri appartenenti all'intervallo con 2\^(l - 1) valori positivi e altrettanti negativi: per un totale di 2l valori diversi. Ad esempio, Per l=8 sono rappresentabili tutti i numeri relativi appartenenti all'intervallo \[-127,127\].\ \ Il problema di questa rappresentazione è che sono presenti due configurazioni dello zero, lo "0" positivo (00000000) e lo "0" negativo (10000000), quindi le operazioni di somma e sottrazione devono essere corrette nell'attraversamento dello zero. C'è bisogno, inoltre, di algoritmi diversi per effettuare somme e sottrazioni in base al segno degli operandi. ![](media/image14.png) Basta provare a sommare uno a tutte le cifre per capire che i numeri non sono sequenziali e l'operazione non è quindi immediata e facile meccanicamente. COMPLEMENTO A 2 Il grande vantaggio è che può essere usato lo stesso algoritmo per la somma e per la sottrazione senza differenza in base al segno degli operandi, e possono essere quindi assegnate allo stesso circuito elettronico. Le configurazioni che hanno il bit più significativo uguale a zero, cioè quelle comprese nell'intervallo \[0, 2\^(l - 1) - 1\], rappresentano se stesse (numeri positivi) codificati in una normale rappresentazione di numeri naturali. Mentre le configurazioni col bit più significativo uguale a uno, cioè quelle rientranti nell'intervallo \[2\^(l - 1), 2\^l - 1\], rappresentano i numeri negativi che si ottengono traslando a sinistra l'intervallo di 2\^l, cioè l'intervallo \[-2\^(l - 1), -1\] ![](media/image8.png) Nella rappresentazione per complemento a 2, i valori rappresentati sono compresi nell'intervallo ![](media/image15.png) Quindi, l'intervallo non è simmetrico (c'è un numero in più per la parte positiva perché la parte negativa rappresenta anche lo 0), è c'è una sola rappresentazione dello 0. Ad esempio ad 8 bit i numeri vanno da \[-128,127\] COME SI CALCOLA Il complemento a due x" di un valore negativo x si calcola sottraendo il valore assoluto di x da 2\^l. Ad esempio ![](media/image2.png) Se si definisce il complemento alla base b di una cifra c come *c' = (b -1) - c* Quindi, il complemento a 2 del valore si ottiene complementando alla base tutte le cifre del valore assoluto del numero x e sommando poi 1 al valore ottenuto. ![](media/image11.png) Se si ha una sequenza di l bit che rappresenta un numero intero con segno, con i numeri negativi rappresentati in complemento a 2, allora, per ottenere il numero rappresentato, si procede nel seguente modo: - - - Un'altra interpretazione del complemento a 2 è: COMPLEMENTO DIMINUITO Il complemento a uno (x') del numero x si differenzia dal complemento a 2 (x") dello stesso numero per una unità *x' = x" -- 1* Quindi, il complemento a 1 di un numero si ottiene semplicemente complementando tutte le cifre del numero. Era usato in passato ma è stato abbandonato perché, come la rappresentazione in segno e modulo, ha una doppia rappresentazione dello 0 ed è simmetrico. RAPPRESENTAZIONE PER ECCESSO I numeri negativi si determinano come somma di se stessi con 2(l -1) dove l è il numero di bit utilizzati. ![](media/image3.png) Il sistema è identico al complemento a due con il bit di segno invertito: In pratica i numeri compresi tra \[-2(l - 1), 2(l - 1)-1\] sono mappati tra \[0, 2(l -1)\]. In tale rappresentazione, il numero binario che rappresenta 2(l -1) sarà associato allo zero, mentre i valori minori di 2(l - 1) ai numeri negativi e quelli maggiori a quelli positivi. ![](media/image17.png) RAPPRESENTAZIONE IN ECCESSO K (OFFSET) CONFRONTO DELLE DIVERSE RAPPRESENTAZIONI ![](media/image12.png) QUALI SI USANO? Le rappresentazioni in complemento a due ed eccesso sono le più efficienti per svolgere operazioni in aritmetica binaria poiché permettono di trattare la sottrazione tra numeri come una somma tra numeri di segno opposto. E' così possibile costruire circuiti che fanno solo addizioni (si sfrutta l\'overflow, quindi c'è bisogno di sistemi a numero di bit finiti). ![](media/image13.png)