Sei sulla pagina 1di 57

APPUNTI DI INFORMATICA

Sistemi di numerazione e codici

Realizzati da Paola Pucci e Paola Pagliariccio

APPUNTI DI INFORMATICA

Sistemi di numerazione Conversioni

Rappresentazione numeri
Codici

Sistemi di numerazione
Un sistema di numerazione un insieme di simboli e di regole che consentono di scrivere i numeri. Pu essere:

POSIZIONALE: ogni numero composto da pi cifre


affiancate, ciascuna delle quali ha peso diverso a seconda della posizione che occupa. ESEMPIO: sistema decimale 111 =100+10+1

ADDITIVO: ogni numero viene espresso come


combinazione di simboli che simulano la somma algebrica ESEMPIO: numeri romani III=1+1+1

Sistemi di numerazione
Ogni sistema di numerazione posizionale utilizza dei simboli diversi per comporre i numeri.
Numero dei simboli utilizzabili = la BASE del sistema (b). Insieme dei simboli utilizzabili = ALFABETO del sistema (A). Ad ogni cifra corrisponde un peso pari alla base elevata alla posizione della cifra stessa -1, cos per la prima cifra di destra lesponente 0. (Peso=bposizione-1) Il valore associato a ciascuna cifra dato dal prodotto del peso per il numero della cifra Il valore associato al numero dato dalla somma del valore di ciascuna cifra

134 =4*100+3*101+1*102
cifra peso

posizione-1

Sistemi di numerazione

Sistema binario Sistema ottale

Sistema decimale Sistema esadecimale

Sistema
POSIZIONALE

BINARIO

BASE = 2
ALFABETO A = {0, 1}

23

22

21

20

PESO = 2posizione-1
Legato strettamente alla logica del funzionamento del computer I simboli di base 1 e 0 (BASE 2) corrispondono ai valori del Bit (Binary digiT) minima informazione memorizzabile.

Sistema

binario

3 2 1 0 1 1 0 12

Posizione cifra -1

NUMERO
1 * 20= 1 0 * 21= 0 1 * 22= 4

1 * 23= 8
Valore= 1 + 0 + 4 + 8 = 13

Numeri binari
La successione dei numeri interi in base 2 si ottiene in modo analogo a quella del sistema in base 10; si inizia con la cifra di posizione zero e si procede sommando 1; quando i simboli da utilizzare in una posizione sono finiti si riparte da 0 in quella posizione e si somma 1 alla cifra di posizione successiva.
0 (zero) 1 (uno) 10 (due) 11 (tre) 100 (quattro) 101 (cinque) 110 (sei) 111 (sette) 1000 (otto) 1001 (nove) 1010 (dieci) 1011 (undici) 1100 (dodici) 1101 (tredici) 1110 (quattordici) 1111 (quindici)

Le 4 operazioni binarie Addizione Sottrazione

Moltiplicazione Divisione
esercizi

Addizione binaria
0 1 0 1 + + + + 1 0 0 1 = = = = 1 1 0 10

1 1 1 1 0 1 0 + (10)

1 + 1 + 1 = 11

1 1 1 = (7)
1 0 0 0 1 (17)

Sottrazione binaria
1-1=0 1-0=1 0-0=0 10 - 1 = 1

1 1 1 0 0 0

10

1 1 -

(27) (6)

1 0 1 = (21) 1 1 0

Moltiplicazione binaria
1 1 0 0 * * * * 1 0 0 1 = = = = 1 0 0 0
1 1 0 1 * (13) 1 0 1 = (5)
1 1 1 1

1 1 0 1 0 0 0 0 1 1 0 1 -

1 0 0 0 0 0 1

(65)

Divisione binaria
87:5= 17 resto 2
1 0 1 0 1 1 1 1 0 1

1 0 1
0 0 0 0 1

1 0 0 0 1

0
1 1 0 1 1 1 1 0 1 0 1 0

1010111:101= 10001

resto

10

esercizi
Trasformare tutti i numeri in binario ed eseguire le operazioni indicate [(44 - 17) * 2 + 9] / 11= Sia A2=1111000 e B2=10111 eseguire: A2 (?)16 B2 (?)16 A2 + B2 A2 - B2 A2 * B2 A2 / B2

Sistema ottale
POSIZIONALE BASE = 8 ALFABETO A = {0, 1, 2, 3, 4, 5, 6, 7} PESO = 8posizione-1 Assume importanza perch la base 8 una potenza di 2, base del sistema di numerazione binario.

8 = 23
83 82 81 80

Sistema

ottale

3 2 1 0 1 0 3 58

Posizione cifra -1

NUMERO
5 * 80= 5 3 * 81= 24 0 * 82= 0

1 * 83= 512
Valore= 5 + 24 + 0 + 512 = 541

Sistema DECIMALE
E dovuto agli arabi

POSIZIONALE
BASE = 10

ALFABETO A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
PESO = 10posizione-1

103

102

101

100

Sistema

DECIMALE

3 2 1 0 7 3 0 9

Posizione cifra -1

NUMERO
9 * 100= 9 0 * 101= 0 3 * 102= 300

7 * 103= 7000
Valore= 9 + 0 + 300 + 7000= 7309

Sistema ESADECIMALE
POSIZIONALE BASE = 16 ALFABETO A ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} PESO = 16posizione-1 Assume importanza perch la base 16 una potenza di 2, base del sistema di numerazione binario. 10 11 12 13 14 15

16 = 24
163 162 161 160

Sistema

esadecimale

3 2 1 0 1 0 A E16

Posizione cifra -1

NUMERO
E * 160= 14 A * 161= 160 0 * 162= 0

1 * 163= 4096
Valore= 1+ 160 + 0 + 4096= 4270

Conversioni
Da base b10 a base 10 Da 10 a base b10 Da base a10 a base b10 Da base 2 a potenza di 2 Da potenza di 2 a base 2 Moltiplicare ogni cifra, a partire da destra, per le potenze successive di b, a partire da 0 e poi sommare i risultati. Dividere il numero per b fino ad ottenere 0 e leggere i resti in senso inverso. Eseguire le trasformazioni a10 e poi 10b. ab ab Formare a partire da destra gruppi di n cifre e trasformare ogni gruppo in base 10 . Trasformare in base 2 ogni cifra occupando n posizioni.

b 10

10 b 10 b

2 2n 2 2n

2n

2n 2 2

Conversioni

b 10

Binario Decimale (2 10)


Ottale Decimale (8 10) Esadecimale Decimale (16 10)

Binario Decimale
Si ottiene tramite la rappresentazione polinomiale: cio la somma dei prodotti della cifra binaria moltiplicata per la base (2) elevata alla posizione -1

1101

= (1*20 ) + (0*21 ) + (1*22 ) + (1*23 ) = 1*1 + 0*2 + 1*4 + 1*8 = 1 + 0 + 4 + 8 =


1 23=8 1 22=4 0 21=2 1 20=1

13

10

* =1310

ottale Decimale
Si ottiene tramite la rappresentazione polinomiale: cio la somma dei prodotti della cifra binaria moltiplicata per la base (8) elevata alla posizione -1

2761

= (1*80 ) + (6*81 ) + (7*82 ) + (2*83 ) = 1*1 + 6*8 + 7*64 + 2*512 = 1 + 48 + 448 + 1024 =
7 82=64 6 81=8 1 80=1

1521

10

2 83=512

1024

448

48

=152110

esadecimale Decimale
Si ottiene tramite la rappresentazione polinomiale: cio la somma dei prodotti della cifra binaria moltiplicata per la base (16) elevata alla posizione -1

2BC

16

= (C*160 ) + (B*161 ) + (2*162 ) = 12*1 + 11*16 + 2*256 = 12 + 176 + 512 =


2 162=256 B=11 161=16 C=12 160=1

700

10

* =70010

512

176

12

Conversioni

10 b

decimale binario (10 2)


decimale ottale (10 8) decimale esadecimale (10 16)

Decimale binario
Metodo delle divisioni successive: si divide il numero per la base (2) finch non si ottiene 0, i resti ottenuti, presi in ordine inverso, costituiscono il numero binario cercato; il primo resto la cifra di posizione 0, il secondo quella di posizione 1 e cos via fino allultimo resto ottenuto che rappresenta il bit pi significativo. 19 18 1 2 9 8 1 2 4 4 0 2 2 2 0 2 1 0 1 2 0

19 : 2 =
9 : 2 = 4 : 2 = 2 : 2 = 1 : 2 =

9
4 2 1 0

resto resto resto resto resto

1
1 0 0 1

100112

Decimale ottale
Metodo delle divisioni successive: si divide il numero per la base (8) finch non si ottiene 0, i resti ottenuti, presi in ordine inverso, costituiscono il numero binario cercato; il primo resto la cifra di posizione 0, il secondo quella di posizione 1 e cos via fino allultimo resto ottenuto che rappresenta il bit pi significativo. 1521 8 8

1520 190

184
6

23
16 7

8
2 0 2 8 0

1521 : 8 =
190 : 8 = 23 : 8 = 2 : 8 =

190
23 2 0

resto resto resto resto

1
6 7 2

27618

Decimale esadecimale
Metodo delle divisioni successive: si divide il numero per la base (16) finch non si ottiene 0, i resti ottenuti, presi in ordine inverso, costituiscono il numero binario cercato; il primo resto la cifra di posizione 0, il secondo quella di posizione 1 e cos via fino allultimo resto ottenuto che rappresenta il bit pi significativo.

700
688 12=C

16
43 32 11=B 16 2 0 2 16 0

700 : 16 =
43 : 16 = 2 : 16 =

43
2 0

resto resto resto

12=C
11=B 2

2BC16

Conversioni
1100112 (??)5
1100112 (??)10 (??)5

ab

1100112 = 1*20 + 1*21 + 0*22 + 0*23 + 1*24 + 1*25 = 1*1 + 1*2 + 0*4 + 0*8 + 1*16 + 1*32= 1 + 2 + 0 + 0 + 16 + 32 = 5110
51 : 10 : 2 : 5 5 5 = = = 10 2 0
resto resto resto

1 0 2

1100112 2015

Conversioni
Conversione 2 8 =23
una cifra in base 8 corrisponde a 3 in base 2

2 2n
4 100 5 101 6 110 7 111

Tabella di conversione 0 000 1 001 2 010 3 011

100
1001100112 4

110
6

011
3 4638

Tabella di conversione

Conversione 2 16 =24
una cifra in base 16 corrisponde a 4 in base 2 1101101112 0001 1011 0111 1 11=B 7 1B716

0 000 0 1 000 1

8 9

100 0 100 1

2 001 0
3 001 1 4 010 0

A 101 0
B 101 1 C 110 0

Conversioni
Conversione 8 (=23)2
una cifra in base 8 corrisponde a 3 in base 2

2n 2
4 100 5 101 6 110 7 111

Tabella di conversione 0 000 1 001 2 010 3 011

4
4638 100

6
110

3
011 1001100112

Tabella di conversione

Conversione 16 (=24) 2
una cifra in base 16 corrisponde a 4 in base 2 1B716 1 B=11 7 0001 1011 0111 1101101112

0 000 0 1 000 1

8 9

100 0 100 1

2 001 0
3 001 1 4 010 0

A 101 0
B 101 1 C 110 0

Codici
Il codice digitale una tabella nella quale vengono associati a ciascuno dei simboli originari un nuovo simbolo che mantiene lo stesso contenuto informativo Insieme sorgente Insieme codificato

codice

Insieme dei simboli originari

Insieme dei simboli codificati

Deve essere efficace, cio deve far corrispondere a ciascuno degli elementi dellinsieme sorgente un solo elemento dellinsieme codificato (relazione biunivoca)

Codici

Codice numerico (BCD)


codifica dei caratteri (ASCII)

Codice BCD
Codice numerico, realizza un sistema di numerazione decimale codificato in binario.
Ciascuna cifra di un numero del sistema di numerazione decimale rappresentata utilizzando il numero binario corrispondente.

01000
479 decimale

0111

1001

100001111001 Codifica BCD

Codifica dei caratteri


Bisogna codificare:
lettere dellalfabeto anglosassone maiuscole e minuscole a,b,c, A,B,C (52 simboli) cifre numeriche 0,1,2,3, (10 simboli)

simboli di punteggiatura, parentesi e operatori aritmetici


% & ( ) . , ; ? ! + - * / ... serie di simboli specifici necessari in una comunicazione

Occorrono minimo 7 bit (27 = 128)

Codice ASCII
(American

Standard Code for Information Interchange)

Codice standard a 7 bit divenuto poi a 8 bit (ASCII esteso) Il codice ASCII standard utilizza 8 bit, il primo dei quali sempre 0 I primi 32 codici sono assegnati a caratteri di controllo della comunicazione o della stampante (spesso non visualizzabili) i successuvi 96 sono assegnati ai segni dinterpunzione comuni, alle cifre da 0 a 9, e alle lettere dellalfabeto latino, maiuscole e minuscole, Codici ASCII con 1 iniziale sono utilizzati per codificare caratteri speciali, ma la codifica non standard

Tabella ASCII

01000000 @ 01010000
01000001 A 01010001

P
Q

01100000 `
01100001 a

01110000 p
01110001 q

01000010
01000011 01000101 01000110

B
C E F

01010010
01010011 01010101 01010110

R
S T U V X Y Z [ \

01100010
01100011 01100100 01100101 01100110 01101000 01101001 01101010 01101011 01101100 01101110 01101111

b
c d e f g h i j k l n o

01110010 r
01110011 01110100 01110101 01110110 01111000 01111001 01111010 01111011 01111100 s t u v x y z { |

01000100 D 01010100

01000111 G 01010111 W 01100111 01001000 H 01011000 01001001 01001010 01001100 I J L 01011001 01011010 01011011 01011100

01110111 w

01001011 K

01001101 M 01011101
01001110 N 01011110 01001111 O 01011111

]
^ _

01101101 m 01111101
01111111

01111110 ~

Codice ASCII
codifica
c

= si fa corrispondere ad ogni lettera della

parola la relativa combinazione di 8 bit della codifica ASCII


a n e

01100011

01100001

01101110

01100101

decodifica

= si divide la sequenza in gruppi di otto bit

(un byte) e poi si determina il carattere corrispondente ad ogni byte.


011010010110110000000000011100000110111100101110
01101001 01101100 i l 00000000 01110000 01101111 00101110 P o .

Rappresentazione numeri

interi
reali in virgola fissa reali in virgola mobile

Numeri interi con segno


Come rappresentare i numeri negativi? Prima soluzione: rappresentazione in Modulo e Segno (anche detta Binario Naturale) Si utilizza un bit per rappresentare il segno del numero considerato
0 + (numero positivo) 1 - (numero negativo)

Se consideriamo un byte, rimangono ora 7 bit per il modulo del numero: i numeri rappresentabili in 1 byte sono perci [0-127]

+/-

b6

b5

b4

b3

b2

b1

b0

numeri interi con segno


Modulo e

Consideriamo per semplicit solo 4 bit. In modulo e segno:


+ b2 b1 b0

segno +7 +6 +5 +4

Rappresentazione binaria 0 111 0 110 0 101 0 100

valore assoluto 7 6 5 4

+3
+2 +1 +0 -0 -1 -2 -3

0 011
0 010 0 001 0 000 1 000 1 001 1 010 1 011

3
2 1 0 8 9 10 11

In valore assoluto:
b3 b2 b1 b0

-4
-5

1 100
1 101

12
13

Complemento alla base di un numero


In base b con n cifre posso ottenere bn combinazioni che, in questo tipo di rappresentazione, devo utilizzare per rappresentare sia i numeri positivi che quelli negativi. In particolare met combinazioni sono per i numeri positivi (compreso lo 0) e met per quelli negativi; quindi da a

0
bn/2

bn/2 1
bn 1

rappresentano i numeri positivi, compreso lo 0, rispettando la rappresentazione posizionale Rappresentano i numeri negativi secondo la seguente regola: Dato un numero positivo X, il suo negativo corrispondente bn-X

Complemento alla base di un numero


Esempio: in base 2 (b=2) su 4 posti (n=4) si hanno 16(24) combinazioni diverse. Numeri positivi da 0 a 7 0000 0001 0010 0011 0100 0101 0110 0111 0 +1 +2 +3 +4 +5 +6 +7 Numeri negativi da 8 a 15 1000 1001 1010 1011 1100 1101 1110 1111 8=16-8 9=16-7 10=16-6 11=16-5 12=16-4 13=16-3 14=16-2 15=16-1 Primo bit = 1 -8 -7 -6 -5 -4 -3 -2 -1

Primo bit = 0

Complemento alla base 10


Esempio: in base 10 (b=10) su 2 posti (n=2) si hanno 100(102) combinazioni diverse.

Numeri positivi da 0 a 49
00 01 02 0 +1 +2 50 51 52

Numeri negativi da 50 a 99
100-50 100-51 100-52 -50 -49 -48

03
48

+3
48

53
98

100-53
100-98

-47
-2

49

49

99

100-99
Primo bit = 5-9

-1

Primo bit = 0-4

Complemento alla base - 1 di un numero


In base b con n cifre posso ottenere bn combinazioni che, in questo tipo di rappresentazione, devo utilizzare per rappresentare sia i numeri positivi che quelli negativi. In particolare met combinazioni sono per i numeri positivi (compreso lo 0) e met per quelli negativi; quindi da a

0
bn/2

bn/2 1
bn 1

rappresentano i numeri positivi, compreso lo 0, rispettando la rappresentazione posizionale Rappresentano i numeri negativi secondo la seguente regola: Dato un numero positivo X, il suo negativo corrispondente (bn-1)-X

Complemento alla base b


Regola pratica: il complemento a b si trova analizzando le cifre a partire da destra: gli zeri fino alla prima cifra significativa si copiano; della prima cifra significativa si fa il complemento a b, di tutte le altre il complemento a b-1

Esempio: b=10 n=4 gli zeri fino alla prima cifra significativa si copiano; della prima cifra significativa si fa il complemento a 10, di tutte le altre il complemento a 9

0 0

8 9 8 8

0 0

Complemento a 2
Nel sistema binario pi semplice perch Complemento a 2 di 1 = 1 Complemento a 1 di 0 = 1 Complemento a 1 di 1 = 0 Quindi la regola diventa: analizzando le cifre a partire da destra:

Tutte le cifre fino al primo 1 compreso si copiano; Le altre si invertono (10 e 01)

1 1

0 0 0

0 0 0

= 20 infatti = -20

1 1 1 1

0 1 0 1 0 0 + 1 0 1 1 0 0 = 0 0 0 0 0 0 segno

segno

Complemento alla base b


Il complemento alla base si pu ottenere anche sommando 1 al complemento alla base -1 (per definizione) C10 (36) = 64 C9 (36) = 63 Cb = bn X Cb - Cb-1 = 1 quindi che rappresenta 36 in complemento a 10 che rappresenta 36 in complemento a 9 Cb-1 = (bn - 1) X

Cb-1 + 1= (bn - 1) X +1= bn X = Cb

ESEMPIO:

In base 2 su 8 bit
COMPLEMENTO A 2

A =
-A =

00110110 = +26
11001010 = -26

COMPLEMENTO A 1

-A =

11001001 +
1 =

segno

11001010 = -26

Operazioni aritmetiche in complemento: esempi


Il complemento alla base serve quindi per rappresentare i numeri negativi, quindi la sottrazione fra numeri interi pu essere realizzata come somma fra numeri con segno (somma algebrica) A - B = A + (-B)
1 A = 43517 B = 26106 43517 26106 = -B=73894 1 1 1 4 3 5 1 7 + 7 3 8 9 4 =

17411

1 7 4 1 1
1 1

A = 01001 B = 00110

01001 00110 = 00011 -B=11010

0 1 0 0 1 + 1 1 0 1 0 = 0 0 0 1 1 1 1 1

A = 42A61

42A61 -

4 2 A 6 1 +

Rappresentazione in virgola fissa


Il numero complessivo di cifre significative dei numeri che possono essere rappresentate in un calcolatore limitato dalla capacit di una cella di memoria (con k bit, in modulo e segno, si rappresentano i numeri compresi fra 2k-1 e 2k-1-1)

0 1

1 0

0 0

1 0

1 0

1 0

1 0

2k-1-1 -2k-1

2k-1 2k-2

23 22 21 20

Quando si utilizzano numeri in cui sia presente sia una parte intera, sia una decimale, per rappresentare i numeri reali, si pu ricorrere alla rappresentazione detta in Virgola Fissa (fixed point) in cui si fissa la posizione che la virgola deve avere allinterno del numero da rappresentare Ci equivale a stabilire a priori il numero di cifre da utilizzare sia per la parte intera, sia per quella decimale Per i numeri negativi si pu utilizzare ancora la tecnica del complemento

Rappresentazione in virgola fissa


Sistema binario (b=2) Parola di 32 bit Se parte intera 20 bit e parte frazionaria 12 bit

intervallo di interi rappresentabili (231,+231-1) intervallo dei numeri a virgola fissa (219,+219-1).
Differenza di conversione tra la parte intera e la parte decimale, quindi difficolt nella conversione Ridotto intervallo di rappresentazione dei numeri e limitazione sulle cifre disponibili (Ad esempio i 12 bit disponibili per la .
parte frazionaria consentono di rappresentare circa tre cifre decimali)

0 0 1 0 , 1 1 1 1
23 22 21 20 2-1 2-2 2-3 2-4

(0*23)+(0*22)+(1*21)+(0*20)+(1*2-1)+(1*2-2)+(1*2-3)+ (1*2-4) = 2 + 0,5 + 0,25 + 0,125 + 0,0625 = 2,9375

Rappresentazione in virgola fissa


La parte intera si converte col metodo delle divisioni successive Per la parte alla destra della virgola: 1.si moltiplica la parte a destra della virgola per 2 2.si prende la parte intera del risultato come cifra utile 3.si ripetono i passi 1 e 2 finch la parte a destra della virgola non diventa 0 esempio 19.375 Parte intera 19 : 2 = 9 : 2 = 9 4
resto resto

Parte frazionaria 1 1 0.375 * 2 0.75 * 2 0.5 * 2 = 0.75 = 1.5 = 1.0 0 1 1

4 : 2 =
2 : 2 = 1 : 2 = Quindi

2
1 0

resto
resto resto

0
0 1

(19.375)10 = (10011.011)2

Rappresentazione in virgola mobile


Un numero non intero (reale) viene spesso rappresentato in notazione esponenziale; spostando la virgola si ottengono infinite rappresentazioni ed proprio per questo motivo che si chiama virgola mobile (floating point) Esempio: 47.35 = 0.4735 * 102 = 0.04735*103 = 4375 * 10-2 Si sceglie come rappresentazione di riferimento quella normalizzata cio quella dove la parte intera del numero 0 e la prima cifra decimale diversa da 0 Forma normalizzata di 47.35 + 0. 4735 * 102

segno mantissa esponente

Rappresentazione in virgola mobile


Un numero reale pu essere rappresentato in singola precisione (4 byte): 1 bit per il segno, 8 bit per lesponente, aumentato di 127 per renderlo positivo (caratteristica); 23 bit per la mantissa.

31

30

23

22

segno

caratteristica

mantissa normalizzata

63

doppia precisione (8 byte): 1 bit per il segno, 11 bit per lesponente, aumentato di 1023 per renderlo positivo (caratteristica); 52 bit per la mantissa.

62

52

51

Virgola mobile: un esempio

0.123*1014
Segno mantissa

0 10001101 00000000000000001111011
caratteristica

mantissa

14 + 127 = 141

0.123

Virgola fissa / virgola mobile

Generalmente si usa: VIRGOLA FISSA NEL GESTIONALE dove e importante la precisione e non la dimensione dei numeri

VIRGOLA MOBILE NELLO SCIENTIFICO dove e importante poter trattare numeri molto grandi o molto piccoli