Rappresentazione dell’informazione Claudia Raibulet raibulet@disco.unimib.it
Rappresentazione di numeri I sistemi di numerazione definiscono: L’insieme dei simboli base (CIFRE) L’insieme di regole che permettono di definire la rappresentazione di un numero mediante una stringa di cifre L’insieme di operazioni Il numero di simboli utilizzati nel sistema di numerazione è detto la base del sistema Lo stesso numero è rappresentato da numerali diversi in diversi sistemi: Esempio: 156 nel sistema decimale –> CLVI in cifre romane
Sistemi posizionali Il numero rappresentato da una cifra dipende dalla cifra stessa e dalla posizione occupata dalla cifra nella stringa in cui si trova Esempio: Il sistema decimale: base = 10, cifre = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Numero 32145 = 3*104 + 2*103 + 1*102 + 4*101 + 5*100 In generale: Il numero cn cn-1 cn-2 …c2 c1 cn in base b rappresenta: cn*bn + cn-1*bn-1 + cn-2*bn-2 + … + c2*b2 + c1*b1 + c0*b0 dove ci<b
Sistema binario Base = 2, cifre = {0, 1} Esempio: 1110012 = 1*25 + 1*24 + 1*23 + 0*22 + 0 *21 + 1*20 Conversione dalla base 2 alla base 10: = 32 + 16 + 8 +0 + 0 + 1 = 57
Sistema binario Conversione dalla base 10 alla base 2: dato N>0 intero dividiamo N per 2, otteniamo un quoto Q0 ed un resto R0 dividiamo Q0 per b, otteniamo un quoto Q1 ed un resto R1 ripetiamo finché Qn = 0 Esempio: convertire 123 decimale in binario: Q R 123 : 2 61 1 61 : 2 30 1 30 : 2 15 0 15 : 2 7 1 7 : 2 3 1 3 : 2 1 1 1 : 2 0 1 => 12310 = 11110112
Sistema binario Con n bit si rappresentano i numeri da 0 a 2n-1 n = 3 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 00 01 10 11 000 001 010 011 100 101 110 111
Sistema ottale Base 8, cifre = {0, 1, 2, 3, 4, 5, 6, 7} Esempio: 64358 = 6*83+4*82 +3*81 + 5*80 Conversione dalla base 8 alla base 10: = 3072 + 256 + 24 + 5 = 3357 Con n bit si rappresentano i numeri da 0 a 8n-1
Sistema ottale Conversione dalla base 10 alla base 8: dato N>0 intero dividiamo N per 8, otteniamo un quoto Q0 ed un resto R0 dividiamo Q0 per b, otteniamo un quoto Q1 ed un resto R1 ripetiamo finché Qn = 0 Esempio: convertire 123 decimale in ottale: Q R 123 : 8 15 3 15 : 8 1 7 1 : 8 0 1 => 12310 = 1738
Sistema esadecimale Base 16 Cifre {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} A16 = 1010 B16 = 1110 C16 = 1210 D16 = 1310 E16 = 1410 F16 = 1510
Sistema esadecimale Conversione dalla base 16 alla base 10 1AC716 = 1*163 + A*162 + C*161 + 7*160 = 1*163 + 10*162 + 12*161 + 7*160 = 4096 + 2560 + 192 +7 = 685510 Q R 6855:16 428 7 428 :16 26 12 26 :16 1 10 1 :16 0 1
Conversione tra sistemi numerici Da base qualsiasi a base 10 – algoritmo: Consideriamo solo valori interi Si può applicare direttamente la definizione: Esempi E4D16 = (E·162 + 4·161 + D·160)10 = 366110
Conversione tra sistemi numerici Da base 10 a base qualsiasi – algoritmo: se dividiamo il valore N (il numerro) per la base b (la base qualsiasi) si ottiene un quoziente q0 e un resto d0 che è la cifra di peso inferiore (peso zero) del valore N nella base b Ripetendo il procedimento si ricavano le cifre del valore nella base desiderata (i resti delle divisioni) a partire dal posizione meno significativa Il processo di divisione si arresta quando il quoziente ottenuto è nullo e l’ultimo resto costituisce la cifra di peso maggiore
Conversione tra sistemi numerici Esempio: il valore 10610 e’ rappresentato in binario: 106 2 0 53 2 1 26 2 d0 0 13 2 d1 1 6 2 d2 0 3 2 d3 1 1 2 d4 1 0 d5 d6 d6d5d4d3d2d1d0 Risultato: 1 1 0 1 0 1 02
Esercizi – cambio di base 521 da base 8 a base 10 23 da base 10 a base 2 67 da base 10 a base 2 A8E da base 16 a base 10 329 da base 10 a base 16 321 da base 8 a base 2
Conversione da binario a ottale e viceversa Per passare da base 2 a base 8 si divide il numero in base 2 in gruppi di tre cifre a partire da destra (da LSB) e si sostituiscono tali gruppi con le corrispondenti cifre ottali Esempio: Per passare da base 8 a base 2 si rappresenta ogni cifra del numero in base 8 con la sua rappresentazione in binario su tre cifre 1 100 101 010 1112 = 145278 512678 = 101 001 010 110 1112
Conversione da esadecimale a binario e viceversa Per passare da base 2 a base 16 si divide il numero in base 2 in gruppi di quatro cifre a partire da destra (da LSB) e si sostituiscono tali gruppi con le corrispondenti cifre esadecimali Esempio: Per passare da base 16 a base 2 si rappresenta ogni cifra del numero in base 16 con la sua rappresentazione in binario su quatro cifre 101 1001 0101 01112 = 595716 A263716 = 1010 0010 0110 0011 01112