1
2
Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri 3
Sistemi di numerazione posizionali La rappresentazione dei numeri richiede ovviamente una codifica, ovvero la definizione di un alfabeto in codice e di un codice ma oltre a ciò richiede anche la definizione di operazioni ed algoritmi che consentano di realizzare sulle rappresentazioni dei numeri le operazioni caratteristiche del tipo di numero codificato un sistema di numerazione è quindi definito da: alfabeto in codice: ovvero l insieme dei simboli base, che nel caso specifico vengono detti CIFRE un codice: e più in particolare un insieme di regole che permettono di definire la rappresentazione di un numero mediante una stringa di cifre un insieme di operazioni che realizzano sulla rappresentazione dei numeri le operazioni previste per i numeri stessi 4
noi usiamo il sistema di numerazione decimale: l alfabeto in codice è costituito da dieci cifre la prima regola del codice è che una parola codice rappresenta un numero dato dalla somma dei numeri rappresentati dalle singole cifre che lo compongono la seconda regola è che il numero rappresentato da una cifra dipende dalla cifra stessa e dalla posizione occupata dalla cifra nella stringa in cui si trova più precisamente: alle cifre (0,1,2,3,4,5,6,7,8,9) vengono associati nell ordine i primi 10 numeri naturali detta i la posizione occupata dalla cifra c i in una stringa (0 è la prima posizione a partire da destra...), il numero rappresentato da tale cifra è c i *10 i esempio: la stringa 3543 rappresenta il numero: 3*10 0 + 4*10 1 +5*10 2 +3*10 3 il sistema viene detto POSIZIONALE e PESATO 10 viene detto BASE del sistema 5
cambiando l alfabeto in codice e la base, possiamo costruire sistemi posizionali e pesati non decimali un numero X >0 si rappresenta mediante la stringa di cifre: C n-1 C n-2...c 1 C 0. C -1 C -2... C -m se X n 1 i = C i b i= m ovviamente nelle operazioni aritmetiche bisogna tener presente la base b della numerazione... 1 esempio: il sistema ottale Cifre: (0,1,2,3,4,5,6,7) Base: b = 8 Pesi:... 4096 512 64 8 1 10 8 = 8 10 10 11 11 8 = 9 10 12 8 = 10 10 77 8 = 63 10 100 8 = 64 10 10 13 13 8 = 11 10 6
2 esempio: il sistema esadecimale Cifre: (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) Base = 16 Pesi: 4096 256 16 1 10 16 = 16 10 16C 16 = 364 10 il sistema binario Cifre: (0,1) Base = 2 Pesi:...2048 1024 512 256 128 64 32 16 8 4 2 1 10 2 = 2 10 100 2 = 4 10 111010 2 = 58 10 7
Tabella Riassuntiva una caratteristica dei sistemi a base 2 k se per ciascuna cifra adottiamo una codifica in numerazione binaria, ad esempio ottale: : (0,1,2,3,4,5,6,7) (000, 001, 010, 011, 100, 101, 110, 111) la codifica indiretta coincide con quella diretta ad esempio: 77 8 = 111 111 2 34 8 = 011 100 2 esadecimale: : (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) (0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111) A9 16 = 1010 1001 2 FF 16 = 1111 1111 2 A9 16 FF 16 8
Conversione di base Dato N>0 intero convertirlo in base b dividiamo N per b, otteniamo un quoto Q 0 ed un resto R 0 dividiamo Q 0 per b, otteniamo un quoto Q 1 ed un resto R 1 ripetiamo finché Q n < b N=Q 0 b+r 0 Q 0 =Q 1 b+r 1 Q 1 =Q 2 b+r 2... Q n-1 =Q n b+r n sostituendo avremo: N = Q n b n+1 + R n b n + R n-1 b n-1 + + R 1 b +R 0 b 0 e quindi N nella base b è: Q n R n R n-1...r 1 R 0 Conversione decimale binario (cifra binaria meno significativa) 573 dieci : 2 dieci quoziente 286 dieci resto 1 dieci 286 dieci : 2 dieci quoziente 143 dieci resto 0 dieci 143 dieci : 2 dieci quoziente 71 dieci resto 1 dieci 71 dieci : 2 dieci quoziente 35 dieci resto 1 dieci 35 dieci : 2 dieci quoziente 17 dieci resto 1 dieci 17 dieci : 2 dieci quoziente 8 dieci resto 1 dieci 8 dieci : 2 dieci quoziente 4 dieci resto 0 dieci 4 dieci : 2 dieci quoziente 2 dieci resto 0 dieci 2 dieci : 2 dieci quoziente 1 dieci resto 0 dieci 1 dieci : 2 dieci quoziente 0 dieci resto 1 dieci (cifra binaria più significativa) 1 000 111 101 due = 573 101 due 573 dieci 9
Conversione decimale binario Si calcolano i resti delle divisioni per due 18 : 2 = 9 resto 0 9 : 2 = 4 resto 1 4 : 2 = 2 resto 0 2 : 2 = 1 resto 0 1 : 2 = 0 resto 1 10010 137 : 2 = 68 resto 1 68 : 2 = 34 resto 0 34 : 2 = 17 resto 0 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 10001001 Conversione decimale binario conversione in base binaria di 123 decimale 123 : 2 61 resto 1 61 : 2 30 resto 1 30 : 2 15 resto 0 15 : 2 7 resto 1 7 : 2 3 resto 1 3 : 2 1 resto 1 123 10 = 1111011 2 10
Conversione decimale ottale conversione in base ottale di 10268 decimale 10268 : 8 1283 resto 4 1283 : 8 160 resto 3 160 : 8 20 resto 0 20 : 8 2 resto 4 10268 10 = 24034 8 Conversione binario decimale 101100 due = 1 dieci 2 5 dieci+ 0 dieci 2 4 dieci+ 1 dieci 2 3 dieci+ 1 dieci 2 2 dieci+ 0 dieci 2 1 dieci+ + 0 dieci 2 0 dieci = = 1 dieci 32 dieci + 0 dieci 16 dieci + 1 dieci 8 dieci + 1 dieci 4 dieci + 0 dieci 2 dieci + 0 dieci 1 dieci = = 32 dieci + 8 dieci + 4 dieci = = 44 dieci 101110101 due = 1 dieci 2 8 dieci+ 0 dieci 2 7 dieci+ 1 dieci 2 6 dieci+ 1 dieci 2 5 dieci+ 1 dieci 2 4 dieci+ 0 dieci 2 3 dieci+ 1 dieci 2 2 dieci+ 0 dieci 2 1 dieci+ 1 dieci 2 0 dieci = = 1 dieci 256 dieci + 0 dieci 128 dieci + 1 dieci 64 dieci + 1 dieci 32 dieci + 1 dieci 16 dieci + 0 dieci 8 dieci + 1 dieci 4 dieci + 0 dieci 2 dieci + 1 dieci 1 dieci = = 256 dieci+ 64 dieci+ 32 dieci+ 16 dieci+ 4 dieci+ 1 dieci = = 373 dieci 11
Notazione posizionale per i frazionari Per i numeri con la frazione il meccanismo è lo stesso vengono usate posizioni e potenze negative della base Se scriviamo un numero frazionario in base b c (n- 1) c (n- 2).. c 2 c 1 c 0. c -1 c -2 c -3 c -m dove ogni cifra in posizione i viene indicata con c i Una cifra in posizione i di un numero in base b ha peso c i b i ; quindi, il valore del numero è la somma dei pesi di ogni cifra: n 1 m i Ci b + i= 0 i= 1 i X = Ci b Notazione posizionale per i frazionari Quindi per la rappresentazione di 853.43 si ha che: c 2 =8, c 1 =5, c 0 =3 c -1 =4, c -2 =3 Essendo composta da n= 3 cifre intere e da m= 2 cifre decimali il suo valore è: n 1 m i Ci b + i= 1 i= 1 i X = Ci b c 2 10 2 + c 1 10 1 + c 0 10 0 + c -1 10-1 + c -2 10-2 = 8 10 2 + 5 10 1 + 3 10 0 + 4 10-1 + 3 10-2 12
Conversione decimale binario per i numeri con parte frazionaria Procedimento che a partire da una frazione F<1 Ottiene la rappresentazione di F in binario (o una sua approssimazione) azione) Sequenza ripetuta di moltiplicazioni per 2 Si ottiene una parte intera (che può essere 0 o 1) ed una parte decimale F1 La parte intera rappresenta il bit più significativo, mentre F1 viene moltiplicato per 2 Si ottiene una parte intera (che può essere 0 o 1) ed una parte decimale F2 La parte intera rappresenta il secondo bit più significativo, mentre F2 viene moltiplicato per 2 fino a quando Fi è uguale e 0 oppure decidiamo di fermarci. Conversione decimale binario per i numeri con parte frazionaria Esempio: conversione in binario di 0.81 0. 81 2 = 1. 62 1 0. 62 2 = 1. 24 1 0. 24 2 = 0. 48 0 0. 48 2 = 0. 96 0 0. 96 2 = 1. 92 1 0. 92 2 = 1. 84 1 Parte intera 0. 1 1 0 0 1 1 13
Alcuni commenti Il processo di conversione di una frazione non necessariamente termina Una frazione decimale con un numero finito di cifre può essere rappresentata con un numero infinito di cifre binarie possiamo terminare il procedimento quando riteniamo di aver raggiunto una precisione desiderata Esempio: conversione parte frazionaria 0.73 2=1.46 0.46 2=0.92 0.92 2=1.84 0.84 2=1.68 0.68 2=1.36 0.36 2=0.72 0.72 2=1.44 0.44 2=0.88 conversione di 0.73 con 8 bit 1 cifra più significativa 0 1 1 1 0 1 0 cifra meno significativa quindi (0.73)) = (0.10111010) con 8 bit rappresentiamo il numero 0.7265625 14
Esercizi 15