Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
rappresentazione in binario e
algoritmi di conversione
23 settembre 2020
Architettura degli Elaboratori
Perché?
Intuizione per una prova
Con n bit è possibile rappresentare 2n interi
Ricorda: Se con k bit posso rappresentare p sequenze distinte,
con k+1 bit posso rappresentare 2p sequenze distinte
1 bit 2= 21 sequenze distinte: ok
2 bit 4 = 22 sequenze distinte
3 bit 8 = 23 sequenze distinte
4 bit 16 = 24 sequenze distinte
. .
. .
. .
1 1 0 1 = 1 23 +1 22 + 0 21 + 1 20 = 13
(101)2 = (5) 10
(1101)2 = (13) 10
(1011)2 = (11) 10
Da binario a decimale
7 6 5 4 3 2 1 0
N = (1 0 1 1 0 1 0 1)2
N = 1 27 + 0 26 + 1 25 + 1 24 + 0 23 + 1 22 + 0 21 + 1 20
N = 2 7 + 25 + 2 4 + 2 2 + 2 0 =
= 128 + 32 + 16 + 4 + 1 = 181
Da decimale in binario
20=1
N = (181)10 21=2
Devo esprimere N come somma di potenze distinte di 2.
22=4
Cerco la più grande potenza di 2 contenuta in 181:
23=8
181 = 128 + 53 = 27 + 53
24=16
53 = 32 + 21 = 25 + 21
25=32
21 = 16 + 5 = 24 + 5
26=64
5 = 4+1 = 22+1
27=128
1 = 20
28=256
181 = 27+ 25+24 +22 + 20
181 = (10110101) 2
Nota: esiste un unico modo di esprimere un intero come somma di
potenze distinte di 2
Vedremo altri «algoritmi» per i passaggi da decimale in binario e
viceversa
Da decimale in binario
20=1
N = (181)10 21=2
Devo esprimere N come somma di potenze di 2.
Cerco la più grande potenza di 2 contenuta in 181: 22=4
181 = 128 + 53 = 27 + 53 23=8
53 = 32 + 21 = 25 + 21 24=16
21 = 16 + 5 = 24 + 5 25=32
5 = 4+1 = 22+1
26=64
1 = 20
27=128
181 = 27+ 25+24 +22 + 20 28=256
181 = (10110101) 2
Nota: Poiché 181 = 27+ 25+24 +22 + 20, per rappresentare 181 in binario
sono necessari almeno 8 bit. Però:
181 = 0 210 + 0 29 + 0 28 + 1 27 + 0 26 + 1 25 + 1 24 + 0 23
+ 1 22 + 0 21 + 1 20
Quindi 181 = (00010110101) 2 con 11 bit
Notazione posizionale (in base b generica)
La notazione posizionale è definita solo per 2 e 10?
Potremmo definirla per 8?
(1 0 1) 10 = 1 102 + 0 101 + 1 100
(1 0 1) 2 = 1 22 + 0 21 + 1 20 = (5) 10
(1 0 1) 8 = 1 82 + 0 81 + 1 80 = ( 65 ) 10
(1 1 0 1) 2 = 1 23 +1 22 + 0 21 + 1 20 = (13) 10
(1 1 0 1) 8 = 1 83 +1 82 + 0 81 + 1 80 = ( 577 ) 10
Verso una definizione generale: Sequenze
Come indicare una generica sequenza (o stringa) di lunghezza n?
Come indicare una generica sequenza di lunghezza 8?
a 7 a 6 a 5 a 4 a 3 a 2 a 1a 0
Dove a7, a6 , … , a1, a0 sono gli elementi della sequenza, in ordine;
il relativo indice indica (appunto) la posizione all’interno della sequenza.
Gli indici sono i = 0, 1, …, 6, 7. Gli elementi sono ai.
Esempio: 35082847
a7 =3, a6 =5, a5 =0, a4 =8, a3 =2, a2 =8, a1 =4, a0 =7
N = (an-1 an-2 … a1 a0 )2 =
n −1
In notazione compatta: N = ai 2i
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
(234)10 2 102 + 3 10 + 4 = 23410
(234)8 2 82 + 3 8 + 4 = 15610
(234)16 2 162 + 3 16 + 4 = 56410
(234)2 = ?
(101)2 1 22 + 0 2 + 1 = 510
Esercizi
• Da cosa sono caratterizzati i numeri pari in binario?
(11010)2 è pari?
3 3752 Perché?
3 10 + 7 = 37 3 7 52
3 7 5 2 = 3 103 + 7 102 + 5 10 + 2 =
37 10 + 5 = 375 3752
375 10 + 2 = 3752 3752 = (3 102 + 7 10 + 5 ) 10 + 2 =
= ( (3 10 + 7) 10 + 5 ) 10 + 2 =
S3 = 3
S2 = 37 = ( ( (3) 10 + 7) 10 + 5 ) 10 + 2
S1 = 375
S0 = 3752 = N
Verso un algoritmo di conversione (con b=2)
b=2
N = (1101) 2
n=4
(1 1 0 1) 2 = 1 23 + 1 22 + 0 21 + 1 20
S3 = 1 = ( ( (1) 2 + 1) 2 + 0 ) 2 + 1
S2 = 3
S1 = 6
S0 = 13 = N
Verso un algoritmo di conversione (con b=2)
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 2
(11101001)2
n=8 S7 = a7 = 1
S6 = a6+2S7 = 1 + 2 = 3
S5 = a5+2S6 = 1 + 6 = 7
S4 = a4+2S5 = 0 + 14 = 14
S3 = a3+2S4 = 1 + 28 = 29
S2 = a2+2S3 = 0 + 58 = 58
S1 = a1+2S2 = 0 + 116 = 116
S0 = a0+2S1 = 1 + 232 = 233
Esempio 3
(11111111)2
n=8 S7 = a7 = 1
S6 = a6+2S7 = 1 + 2 = 3
S5 = a5+2S6 = 1 + 6 = 7
S4 = a4+2S5 = 1 + 14 = 15
S3 = a3+2S4 = 1 + 30 = 31
S2 = a2+2S3 = 1 + 62 = 63
S1 = a1+2S2 = 1 + 126 = 127
S0 = a0+2S1 = 1 + 254 = 255
Esercizi (continua)
• Quanti bit sono necessari per rappresentare
18?
• Quanti bit sono necessari per rappresentare
un intero n?
Riepilogo
• Rappresentazione binaria con n bit
• Algoritmi di conversione bin->dec e dec->bin
[P] parr. 1.1, 1.2, 1.3.1