Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri 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 4
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 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 5
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 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... 6
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 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 7
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 Tabella Riassuntiva 8
una caratteristica dei sistemi a base 2k 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 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 9
Conversione decimale binario (cifra binaria meno significativa) 573 dieci : 2 dieci quoziente 286 dieci 286 dieci : 2 dieci quoziente 143 dieci resto 0 dieci 143 dieci : 2 dieci quoziente 71 dieci 71 dieci : 2 dieci quoziente 35 dieci 35 dieci : 2 dieci quoziente 17 dieci 17 dieci : 2 dieci quoziente 8 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 (cifra binaria più significativa) 1 000 111 101 due = 573 101 due 573 dieci 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 10
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 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 11
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 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: X n 1 m i Ci b i 1 i 1 i C b i 12