Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Rappresentazione ottale e
esadecimale
25 settembre 2020
Notazione binaria per numeri naturali
In base 2.
I simboli ammessi sono 0,1.
Una sequenza / stringa di 0 e 1, di lunghezza n
N = (an-1 an-2 … a1 a0 )2 =
n −1
N = ai 2
In notazione compatta: i
i =0
Notazione posizionale (in base b generica)
In base b.
I simboli ammessi sono 0,1, … , b-1.
Una sequenza / stringa di 0, 1, … , b-1, di lunghezza n
N = (an-1 an-2 … a1 a0 )b =
n −1
In notazione compatta: N = ai bi
i =0
Esempi
(101)2 1 22 + 0 2 + 1 = 510
Algoritmi di conversione
Problema della conversione da binario a decimale
Dati: n bit an-1, an-2, … , a1, a0
Risultato: l’intero N tale che N = (an-1 an-2…a1a0)2
….. S2 = S3 2 + a2
….. …..
N= S0 = S1 2 + a0 Sn-1 = an-1
S1 = S2 2 + a1 Sn-2 = an-2 + 2Sn-1
Dal Sn-3 = an-3 + 2Sn-2
S2 = S3 2 + a2 basso
verso …..
….. l’alto:
da an-1 Si = ai + 2Si+1
Sn-2 = Sn-1 2 + an-2 a a0 ; …..
da MSD S0 =N
S0 = a0+2S1
Sn-1 = an-1 a LSD
Sn-1 = an-1
Esempio 1
Sn-2 = an-2+2Sn-1 N = (a7 a6 a5 a4 a3 a2 a1a0)2 n=8
Sn-3 = an-3+2Sn-2
….. (1 0 1 1 0 1 0 1)2
Si = ai+2Si+1
S7 = a7 = 1
….. S6 = a6+2S7 = 0 + 2 = 2
S0 =N S5 = a5+2S6 = 1 + 4 = 5
S4 = a4+2S5 = 1 + 10 = 11
S3 = a3+2S4 = 0 + 22 = 22
S2 = a2+2S3 = 1 + 44 = 45
S1 = a1+2S2 = 0 + 90 = 90
S0 = a0+2S1 = 1 + 180 = 181
Esempio 4
(10011000)2
n=8 S7 = a7 = 1
S6 = a6+2S7 = 0 + 2 = 2
S5 = a5+2S6 = 0 + 4 = 4
S4 = a4+2S5 = 1 + 8 = 9
S3 = a3+2S4 = 1 + 18 = 19
S2 = a2+2S3 = 0 + 38 = 38
S1 = a1+2S2 = 0 + 76 = 76
S0 = a0+2S1 = 0 + 152 = 152
Algoritmo di conversione: decimale in binario
N = (an-1 an-2…a1a0 )2
Dato: N. Risultato: an-1 , an-2 , …, a1 , a0 con ai = 0 o 1
Procedura inversa: dall’alto verso il basso da a0 ad an-1;
da LSD a MSD
N= S0 = S1 2 +a0 a0 ed S1 sono rispettivamente il resto e il
quoziente della divisione di N= S0 per 2.
S1 = S2 2 + a1
S2 = S3 2 + a2 ….
……
Si = Si+1 2 + ai ai ed Si+1 sono rispettivamente il resto e
il quoziente della divisione di Si per 2.
…… ….
Sn-2 = Sn-1 2 + an-2 Fino ad ottenere un Si =0.
Sn-1 = an-1 Algoritmo delle divisioni successive
Esempio 1 (decimale in binario)
N=152
S0 = N = a0+2 S1
N = (an-1 an-2…a1a0)2
S1 = a1 + 2 S2
S2 = a2 + 2 S3 S0 = a0+2S1 = 0 + 276 = 152 152 : 2 = 76 con resto 0
….. S1 = a1+2S2 = 0 + 2 38 = 76 76 : 2 = 38 con resto 0
Si = ai + 2 Si+1 S2 = a2+2S3 = 0 + 2 19 = 38 38 : 2 = 19 con resto 0
S3 = a3+2S4 = 1 + 2 9 = 19 19 : 2 = 9 con resto 1
…..
Sn-1 = an-1 S4 = a4+2S5 = 1 + 2 4 = 9 9 : 2 = 4 con resto 1
S5 = a5+2S6 = 0 + 2 2 = 4 4 : 2 = 2 con resto 0
S6 = a6+2S7 = 0 + 2 1 = 2 2 : 2 = 1 con resto 0
STOP
N = (10011000)2
Algoritmi di conversione binario decimale
• Da binario a decimale:
1. moltiplico ogni cifra per l’opportuna potenza di 2 e poi
sommo (definizione)
2. Considero i bit dal MSD (da sinistra a destra), partendo
da zero, raddoppio e sommo il prossimo bit
• Da decimale a binario:
1. esprimo il numero come somma di potenze di 2,
partendo dalla più grande potenza di 2 minore o
uguale del numero
2. Divisioni successive per 2: i resti forniscono i bit dal
LSD, riapplico ai quozienti
Conversione da decimale a base B
Altre basi importanti
Nel sistema posizionale pesato abbiamo
visto le rappresentazioni in base 2 e 10 e le
relative conversioni.
Altre basi importanti (per l’informatica
almeno) sono 8 e 16.
Notazione in base 8 / ottale
In base 8.
I simboli ammessi sono 0,1, … , 7.
Una sequenza / stringa di 0, 1, … , 7, di lunghezza n
N = (an-1 an-2 … a1 a0 )8 =
n −1
In notazione compatta: N = ai 8i
i =0
Esempi
(234)8 2 82 + 3 8 + 4 = 15610
(101)8 1 82 + 0 8 + 1 = 6510
Un po’ di magia
b=8 rappresentazione ottale
( 213)8 = 2 82 + 1 8 + 3 = 139
Valore 0 000
010 001 011 identico 1 001
2 010
3 011
4 100
27+23+21+20=
Convertiamolo 5 101
in decimale =128+8+2+1 = 139 6 110
7 111
Sarà un caso?
Non è un caso!
010001011=
= 2 26 + 1 23 + 3 20 =
= 2 82 + 1 81 + 3 80 = ( 2 1 3) 8
Da binario a ottale
= b2 82 + b1 81 + b0 80
E inoltre b2 , b1 , b0 sono compresi fra 0 e 7.
Da binario ad ottale e viceversa
Da binario ad ottale:
• Raggruppa i bit 3 a 3 da destra
• Ad ogni gruppo fai corrispondere la cifra in ottale (da 0 a 7)
Da ottale a binario:
• Ad ogni cifra in ottale far corrispondere la
rappresentazione binaria su 3 bit e concatenare
Esempi:
Notazione in base 16 / esadecimale
In base 16.
I simboli ammessi sono 0,1, … , 9, A, B, C, D, E, F.
Una sequenza / stringa di 0, 1, … , F, di lunghezza n
A volte (per es. in [PH]) è usato il prefisso 0x davanti la stringa. Esempio: 0x8A00C
Ancora magia!
b = 16 rappresentazione esadecimale
29 + 21 + 20 = 515
Esempi:
Esercizi
• Quanti bit sono necessari per rappresentare
18?
• Quanti bit sono necessari per rappresentare
152?
• Quanti bit sono necessari per rappresentare
un intero n?
Numero di bit per rappresentare N
E’ possibile prevedere il numero di bit necessari per rappresentare N in binario?
Potevamo prevedere che per rappresentare N = 152 occorrevano 8 bit?
E’ possibile rappresentare 152 con 7 bit?
No , perché con 7 bit possiamo rappresentare tutti e soli gli interi da 0 a 27 - 1=127
Più precisamente 152 = 27,248. Ci serve risalire a 7,248 da 152. Come fare?
7,248 = log 2 152 .
Nota: 152 si può rappresentare anche con 9, 10, 11, ….. bit:
(152)10 = (10011000)2 = (010011000)2 = (0010011000)2 = (00010011000)2
Esercizi
• Da cosa sono caratterizzati i numeri pari in binario?
(11010)2 è pari?