La rappresentazione delle
informazioni in un computer
Seconda parte
Operazioni in binario
Poiché sistema decimale e sistema binario
seguono entrambi le regole dei sistemi di
numerazione posizionali lo stesso succede
quando si vogliono fare operazioni
aritmetiche
Addizione
Supponiamo di voler sommare due numeri
ad otto bit
Ad esempio 01011011 equivalente a
64+16+8+2+1=91 in base 10 e 00101110
equivalente a 32+8+4+2=46
Notiamo esplicitamente che abbiamo
aggiunto all’inizio degli zeri per fare in
modo che i due numeri siano entrambi
costituiti da 8 bit
Questa è una cosa che un essere umano
normalmente non fa
Non iniziamo mai un numero con zero ma
con la prima cifra significativa diversa da
zero
Se proviamo a scrivere un numero sulla
calcolatrice essa eliminerà
automaticamente gli zeri che comporremo
all’inizio
Inoltre un essere
umano non cerca di
fare in modo che i
numeri siano tutti
della stessa
lunghezza ma scrive
tante cifre quante
sono quelle che gli
servono
Infine un essere
umano può sommare
numeri anche di
dimensioni diverse
1 7 4 +
8 4 3 2 =
8 6 0 6
Un’altra caratteristica dell’uomo è che può
pensare e scrivere numeri con un numero
di cifre qualsiasi
Ha bisogno soltanto di abbastanza
inchiostro
Abbastanza carta…
… e di tempo. Perché il Padreterno
potrebbe avere altre idee al riguardo
Un computer non ha invece questa
capacità
Per pensare dei numeri deve poterli
scrivere da qualche parte
Esso usa degli oggetti che si chiamano
registri
Ogni registro è costituito da celle ognuna
delle quali memorizza un singolo bit
Come tutto quello che è fabbricato
dall’uomo, i registri hanno dimensioni
standard ad esempio possono contenere 8
bit per cui la lunghezza massima dei
numeri è pertanto prefissata
Un processore con registri ad 8 bit può
“pensare” soltanto numeri lunghi al
massimo 8 bit
Possiamo costruire un microprocessore
con registri più lunghi ma il discorso non
cambia
Un microprocessore a 64 bit non potrà
pensare numeri da 65 bit o oltre!
Va tenuto poi conto che una cella di
memoria può assumere soltanto due
valori per cui può contenere soltanto 0 o 1
E’ per questo motivo che le celle iniziali
anche se non sono utilizzate devono
essere poste a zero
Infine c’è il problema dei numeri negativi
L’uomo utilizza i simboli + e –
Vedremo che il computer utilizzerà il bit più
a sinistra per rappresentare il segno del
numero per cui ancora una volta è
importante che i numeri abbiano la stessa
lunghezza
Torniamo alla nostra somma
0
1
0
1
1
0
1
1 +
0
0
1
0
1
1
1
0
Cominciamo a sommare partendo da destra
come faremmo in decimale
1+0=1
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
Adesso dobbiamo sommare i bit in seconda
posizione
1+1=2 ma in binario 2 si scrive con due bit 10
per cui vuol dire che dobbiamo scrivere 0 e
riportare 1
La stessa cosa succedeva in decimale se
sommavamo ad esempio 8+5. Il risultato fa 13
che in decimale non si può scrivere con una sola
cifra per cui dovevamo scrivere 3 e riportare 1
1 riporto
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
0
1
Sommiamo ora i bit in terza posizione più il
riporto
0+1+1 di riporto =2 cioè in binario 10 per cui si
scrive 0 e si riporta 1
1 riporto
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
0
0
1
Sommando le quarte cifre più il riporto si avrà
1+1+1=3 che è pari in binario a 11 per cui si
scrive 1 e si riporta 1
1 riporto
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
0
0
1
Questo è il risultato finale
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
0
0
0
1
0
0
1
La sottrazione
Anche la sottrazione si può fare nello
stesso modo con cui si fa una sottrazioen
in decimale
1-0=1
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
1-1=0
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
0
1
Se adesso andiamo a sottrarre i bit di
posizione 3 vediamo che 0è più piccolo di
1 per cui è costretto a farsi fare un prestito
Ragioniamo ora su come operavavamo in
decimale
Quando si faceva un prestito dalla cifra
superiore il prestito valeva 10
In quest’esempio 2 deve farsi fare un prestito e diventa 12 quindi si è
fatto prestare 10 [PROPRIO IL VALORE DELLA BASE!!!]
3
2
4 -
1
5
2 =
1
7
2
IN MANIERA ANALOGA IN BINARIO SE
UNA CIFRA SI FA FARE UN PRESTITO,
IL PRESTITO VALE QUANTO LA BASE
CIOE’ 2
QUINDI NELL’OPERAZIONE CHE
STAVAMO FACENDO 0 SI FA FARE UN
PRESTITO E DIVENTA 2, LE SI
SOTTRAE 1 E DIVENTA 1
prestito di 2
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
0
1
Il bit in quarta posizione, facendo un
prestito, è diventato 0 per cui ha bisogno a
sua volta di un prestito
Diventa 2 e le si sottrae 1
prestito di 2
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
1
0
1
PROSEGUENDO…
0
1
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
0
0
1
0
1
1
0
1
Facendo le sottrazioni possiamo avere
risultati negativi
E’ dunque necessario capire come il
computer rappresenta i numeri negativi
Proviamo ad esempio ad eseguire
l’operazione 27-46
Il risultato è il seguente
0
0
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
1
1
0
1
1
0
1
Il risultato avrebbe dovuto essere
-19
In effetti la stringa di bit che
abbiamo otttenuto rappresenta il
numero -19 ma con una tecnica
particolare che si chiama
complemento a due
1
1
1
0
1
1
0
1
La rappresentazione di un numero
negativo si ottiene nel seguente
modo
Si prende il numero positivo
corrispondente
Cominciando da sinistra si inverte ogni bit
(se è 0 lo si trasforma in 1 e viceversa)
Quando si arriva all’ultimo 1 della stringa
ci si ferma: quel bit e tutti i bit che lo
seguono non vanno modificati
Quello che otteniamo è il corrispondente
numero negativo
Esempio
+
27
0
0
0
1
1
0
1
1
-
27
1
1
1
0
0
1
0
1
Esempio 2
+
42
0
0
1
1
0
0
1
0
-
42
1
1
0
0
1
1
1
0
La prima cosa che si nota è che se il
numero è positivo comincia con 0
Se il numero è negativo comincia da 1
Noi stavamo calcolando 27- 46
0
0
0
1
1
0
1
1
+
0
0
1
0
1
1
1
0
=
1
1
1
0
1
1
0
1
Il risultato avrebbe dovuto essere
-19
In effetti la stringa di bit che
abbiamo otttenuto comincia con 1
quindi è effettivamente un numero
negativo
1
1
1
0
1
1
0
1
In effetti facendo il complemento a
due si ottiene +19 quindi
effettivamente quella stringa di
partenza rappresenta -19
+
19
1
1
1
0
1
1
0
1
0
0
0
1
0
0
1
1
Scarica

La rappresentazione delle informazioni in un computer (seconda