...

NOTAZIONE BINARIA, OTTALE, ESADECIMALE CODIFICADI

by user

on
Category: Documents
70

views

Report

Comments

Transcript

NOTAZIONE BINARIA, OTTALE, ESADECIMALE CODIFICADI
NOTAZIONE BINARIA, OTTALE,
ESADECIMALE
CODIFICA DI NUMERI INTERI
RELATIVI
1
CONVERSIONE BINARIO  DECIMALE
Convertire in decimale il numero binario N = 101011.10112
N = 1 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 1 · 21 + 1 · 20
+ 1 · 2-1 + 0 · 2-2 + 1 · 2-3 + 1 · 2-4
= 43.687510
NB:
25
(32)
1
24
(16)
0
23
(8)
1
22
(4)
0
21
(2)
1
20
(1)
1
2-1
2-2
2-3
2-4
(1/2) (1/4) (1/8) (1/16)
(.5)
(.25)
1
0
(.125) (.0625)
1
1
2
CONVERSIONE DECIMALE  BINARIO
Dato un numero decimale (p.es. 57.6875), è necessario distinguere
la parte intera dalla parte frazionaria: N = I.F (es: I=57, F=0.6875)
Regola pratica per la conversione della parte intera
?
?
?
?
I = Cn*2n + Cn-1*2n-1 + ....... + C1*21 + C0
3
Per convertire la parte intera I di un numero N decimale in notazione
binaria basta dividerla ripetutamente per 2 e scrivere ordinatamente i
valori dei resti ottenuti, a partire dalla posizione meno significativa
/2
Es: decimale  binario
57
28
14
7
3
1
0
1
0
0
1
1
1
5710 = 1110012
4
ERRORE TIPICO:
considerare la prima cifra ottenuta come la più significativa:
57
28
14
7
3
1
0
1
0
0
1
1
1
otterrei 100111 che vale 39!
NB: nel dubbio, ragionare!!!
Se continuassi il procedimento di divisioni successive aggiungerei zeri;
questi “non pesano” solo se corrispondono alle posizioni più significative ( 0…0xyz ) !
5
Metodo “più pratico” di conversione da decimale intero a binario
128
7
64
6
32
5
16
4
8
3
4
2
2
1
1
0
ESEMPIO: convertire in binario 5710
57 = 1 1 10012
[32+16+8 +1]
[25 + 24+23+ 20]
NB: almeno per valori non troppo elevati, conviene abituarsi ad utilizzare
questo metodo.
6
ESEMPI STANDARD
Quanto vale il numero
0 ...
0
1 ...
1
1
1
n-1
2
1
0
n
2 -1
Esempi con 8 cifre:
8
1
1
1
1
1
1
1
1
2 -1 = 255
1
0
0
0
0
0
0
0
2 = 128
0
1
1
1
1
1
1
1
2 -1 = 127
7
7
7
Regola pratica per la conversione della parte frazionaria
Dato un numero decimale, sia F la sua parte frazionaria.
?
F = C-1
*2-1
?
+ C-2
*2-2
?
+ ....... + C-n*2-n
8
Regola pratica per la conversione della parte frazionaria
Per convertire la parte frazionaria F di un numero decimale N in binario
basta:
- moltiplicare la parte frazionaria per 2
- scrivere il valore della parte intera ottenuto nella posizione più
significativa
- ripetere il procedimento sulla parte frazionaria ottenuta
La conversione ha termine quando si ottiene una parte frazionaria nulla
(ciò non è sempre garantito, cfr. p.es. il caso dei numeri periodici)
9
ESERCIZIO
convertire 57.687510 in binario
Parte intera
5710 = 1110012 (vedi prima)
Parte frazionaria
0.6875
.375
.75
.5
0
1
0
1
1
 57.687510 = 111001.10112
10
ERRORE TIPICO:
considerare la prima cifra ottenuta come la meno significativa:
0.6875
0.375
0.75
0.5
0
1
0
1
1
0.1101 = 0.5 + 0.25 +… > 0.75
NB: se continuassi il procedimento di moltiplicazioni successive aggiungerei zeri; questi “non
pesano” solo se corrispondono alle posizioni meno significative ( 0.xyz0…0 ) !
11
ESERCIZIO
Convertire in binario il numero decimale 137.025
Parte intera:
Parte frazionaria:
137 = 100010012
0.025
0.05
0.1
0.2
0.4
0.8
.6
.2
0
0
0
0
0
1
1
Quindi 137.025 = 10001001.000 0011
12
NB: l’esempio precedente dimostra che un numero “limitato” in base 10
(0.025) può non essere “limitato” in base 2 (0.000 0011)
Altro esempio: convertire in binario 0.8
0.8
.6
.2
0.4
0.8
1
1
0
0
0.810 = 0.11002
13
Operazione aritmetica di addizione
 è l’unica che ci servirà concretamente
 valgono le stesse regole e proprietà dell’addizione in base 10
 si può svolgere “in colonna”: in particolare, si sommano le cifre binarie
ottenendo un numero binario; se questo ha due cifre, la cifra più
significativa è il “riporto”
+
0
1
0
0
1
1
1
(1) 0
NB: 1+1 =210 =102
14
ESEMPIO
1001101.10110 +
1101100.11010 =
10111010.10000
...
...
(1)0
(1)1
15
Notazioni ottale ed esadecimale
Oltre al sistema binario e decimale, vi sono altri sistemi “convenienti” per
la rappresentazione dell’informazione (anche se in ogni caso nel
calcolatore le informazioni sono codificate in binario):
 Sistema ottale (b = 23 = 8)
 Sistema esadecimale (b = 24 = 16)
16
Sistema ottale
base = 8
cifre = 0,1,2,3,4,5,6,7
ES: 573.6718 =
5 * 82 + 7 * 81 + 3 * 80 + 6 * 8-1 + 7 * 8-2 + 1 * 8-3
NB: le conversioni da decimali ad ottali possono essere fatte con il metodo
delle moltiplicazioni e divisioni successive. Tipicamente però le conversioni si
effettuano tra ottali e binari…
17
18
Esercizio (conversione binario  ottale)
Convertire in notazione ottale il numero binario 111010.010
111 010 . 010
7
2 . 2
72.28
19
ERRORE TIPICO:
Convertire in notazione ottale il numero binario 10111010.11
10111010.11
5 6 2. 3
Invece 562.38 = 5*64 + 6*8 + 2 + 3/8 = 370.375 che sicuramente non può
essere rappresentato con una parte intera di soli 8 bit!!!
PARTIRE SEMPRE DAL PUNTO DI RADICE, EVENTUALMENTE
COMPLETANDO LE CIFRE CON DEGLI ZERI PER OTTENERE LE
TERNE:
xxx xxx . yyy yyy …
20
L’esercizio quindi va risolto così:
10111010.110
2 7 2 . 68
infatti risulta 272.68 = 2*64 + 7*8 + 2 + 6/8 = 186.75
e 10111010.112 = 128 + 32 + 16 + 8 + 2 + 0.5 + 0.25 = 186.75
21
ESERCIZIO (conversione ottale  binario)
Convertire in binario il numero in notazione ottale 135.18
1 3 5.18
0 0 1 0 1 1 1 0 1 . 001
ERRORE TIPICO: CONVERTIRE IN
001 011 101 . 1
infatti 0.18 = 1/8
mentre
0.12 = 1/2
22
Sistema esadecimale
base = 16
ES:
cifre = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
A, B, C, D, E, F
[10] [11] [12] [13] [14] [15]
97A.6E116 =
9 * 162 + 7 * 161 + 10 * 160 + 6 * 16-1 + 14 * 16-2 + 1 * 16-3
23
Esempi di conversione
Binario  esadecimale
0111010 .1
3 A . 816
Esadecimale  binario
E 3 . 716
ATTENZIONE!!!
11100011.0111
PARTIRE SEMPRE DAL PUNTO DECIMALE!!!
xxxx . xxxx xxxx
24
Codifica di numeri interi relativi
I numeri interi (con segno) sono rappresentati in una o più celle di
memoria: sia n il numero di bit a disposizione.
Esistono vari tipi di codifica:
 In valore assoluto e segno
 In complemento a 2
 In complemento a 1
 Polarizzazione o “eccesso”
25
Codifica in complemento a 2
Idea: con n cifre  2n numeri, p.es. da 0 a 2n – 1
Metà per i positivi e metà per i negativi, come in figura
Rapp."normale
+2n-1 -1
–2n-1
0111111
10000000
Numeri
positivi
+2
00000001 +1
00000000 0
11111111 –1
–2
n
2 -1
Numeri
negativi
C. A 2: 2n - N
26
Data una parola di lunghezza n:
i numeri positivi sono rappresentati normalmente (rappresentazione
binaria dei numeri positivi);
il bit più significativo è pari a 0
i numeri negativi si ottengono come “complemento a 2” del numero
positivo N corrispondente, ovvero come 2n-N;
il bit più significativo è pari a 1
CI SONO 2
REGOLE
SEMPLICI PER
DETERMINARLO
I valori rappresentabili vanno:
da
- 2n-1
in pratica da - (2n-1 - 1)
a
+ 2n-1 - 1
a
+ 2n-1 - 1
27
Complemento a 2
Dato un numero N rappresentato in base 2 da n cifre il suo complemento a 2 è
dato da C2 = 2n - N
Esempio con 8 bit:
N = 010101002
C2 =
(84)
100000000 01010100
10101100
_____________________________________________
Regole pratiche equivalenti:
1) partendo dal bit meno significativo e procedendo verso sinistra, si
lasciano immutati tutti i bit fino al primo 1 compreso, poi si
invertono gli altri
2) si complementano tutti i bit (complemento a uno) e si aggiunge 1
28
ESERCIZIO
Rappresentare in complemento a due con 8 bit il numero decimale –67.
quindi
6710 = 010000112
-67 = 10111101
Con la regola del complemento a uno:
10111100+
1=
10111101
29
ERRORE TIPICO: dimenticarsi che la rappresentazione in C.a 2 è relativa ad
un numero di bit fissati!!!
Es. Rappresentare in C. a 2 con 8 bit il numero decimale –3.
310 = 112
quindi –3 = 01
ma questo risulta un numero positivo!!!
Svolgimento corretto:
3 = 00000011
(8 bit)
-3 = 11111101
30
ALTRO ERRORE TIPICO: complementare sempre e comunque, anche i
numeri positivi!
ES: Rappresentazione in complemento a due con 6 bit del numero decimale
15.
15 = 001111
anche codificato in compl. a 2!!!
31
Estensione del segno
Estendiamo il segno per rappresentare un
numero su n=k + d bit anziché su n=k bit
1 0 0 1
-7 su n = 4 bit
1 1 1 1 1 0 0 1
-7 su n = 8 bit
32
Aritmetica in complemento a 2
Addizione:
L'addizione di due numeri rappresentati in complemento a 2 dà il
risultato corretto trascurando il riporto (a patto che il risultato sia
entro il range dei numeri rappresentabili).
Sottrazione:
Si riconduce sempre all’addizione: somma del complemento a 2.
Overflow:
Si manifesta quando il risultato non è rappresentabile con i bit a
disposizione. Due regole equivalenti per determinarlo…
33
REGOLA 1 PER DETERMINARE SE C’E’ OVERFLOW
- Se gli addendi hanno segno discorde non è possibile avere
overflow:
MAX (+)
N1
Somma compresa tra N1 (positivo)
ed N2 (negativo), quindi sicuramente
rappresentabile!
0
N2
MIN (-)
- Se gli addendi hanno segno concorde, cfr. il segno del risultato:
+ e +: deve risultare +, altrimenti overflow!
– e –: deve risultare –, altrimenti overflow!
34
Regola equivalente per l’overflow
• Con una rappresentazione su n bit, si ha overflow
se i riporti generati nelle due posizioni più
significative (n-1 e n-2 in figura) sono diversi
n-1 n-2
1
0
(ovvero: c’è riporto generato in una posizione ma non nell’altra)
35
Esempi (n=6: -32  x  31)
26 – 13 = 26 + (-13) = +13 [no overflow]
011010+
26
1 1 0 0 1 1 = -13
1
001101
+13
[13: 0 0 1 1 0 1 ]
_______________________________________
-25 –13 = -25 + (-13) = -38 [overflow]
1 0 0 1 1 1 + -25
[25: 0 1 1 0 0 1 ]
1 1 0 0 1 1 = -13
[13: 0 0 1 1 0 1 ]
1
011010
“+26”
_______________________________________
36
Esercizio (Appello del 23 set 2003)
Rappresentare i numeri –51 e –98 (in base 10) in notazione binaria in
complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così
ottenuti e commentare il risultato. [3]
Soluzione
Conversione nella notazione binaria dei numeri (valori assoluti)
51 = 001100112
(32 + 16 + 2 + 1)
98 = 011000102
(64 + 32 + 2)
Rappresentazione in complemento a due:
-51 = 11001101
-98 = 10011110
37
Somma algebrica:
11001101 +
10011110 =
1 01101011
Risultato: 01101011
Commento (= dire se c’è overflow e spiegare perché nel dettaglio):
- riporto generato in posizione 7: NO
- riporto generato in posizione 8: SI
Poiché i riporti generati nei bit di posizione 7 e 8 sono diversi ho un caso di
overflow
Spiegazione equivalente: dalla somma di due numeri negativi ottengo un
numero positivo.
38
ERRORI TIPICI:
 Dire che c’è overflow perché “i bit di posizione più significativa sono
diversi”. In questo caso si ha incidentalmente overflow
(risultato 01101011) ma la risposta è da ritenersi sbagliata, perché
occorre considerare i riporti!
 Motivare la risposta con l’intervallo di rappresentazione (il risultato non
è rappresentabile): il metodo indicato deve essere eseguibile dal
calcolatore, il quale non ragiona in decimale!
Usare invece la regola dei riporti o, alternativa equivalente, la regola dei
segni!
39
Esercizio (Appello dell’11 set 2003)
Rappresentare i numeri –54 e –44 (in base 10) in notazione binaria in
complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così
ottenuti e commentare il risultato. [3]
Soluzione
 Conversione nella notazione binaria dei numeri (valori assoluti)
54 = 001101102
(32+16+4+2)
44 = 001011002
(32+8+4)
 Rappresentazione in complemento a due dei numeri (con 8 bit)
-54 = 11001010
-44 = 11010100
40
 Somma algebrica:
11001010 +
11010100 =
1 10011110
e quindi il risultato è 10011110.
Commento:
Non c’è overflow perché i riporti generati nelle posizioni 7 e 8 sono uguali (1
e 1). Spiegazione equivalente: dalla somma di due numeri negativi si ottiene
correttamente un numero negativo.
[NB: il risultato è pari a – 011000102 = –9810, che è proprio –54 – 44]
41
ERRORE COMMESSO DA ALCUNI
Dimenticarsi del numero di bit (8):
54 = 1101102
44 = 1011002
-54 = 001010
-44 = 010100
e sommando:
001010+
010100=
011110
risultato che non ha alcun senso!!!
(NB: in questo caso l’esercizio è valutato 0 punti!)
42
Esercizio (Appello del 9 dic 2002)
Rappresentare i numeri 96 e 69 (in base 10) in notazione binaria in
complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così
ottenuti e commentare il risultato. [4]
Soluzione
Rappresentazione in complemento a due con 8 bit:
96 =
01100000
69 =
01000101
Somma algebrica:
01100000+
01000101=
10100101
43
Commento:
Ho overflow perchè i riporti sono diversi (ho soltanto il riporto nel bit 7).
Spiegazione equivalente: il risultato ha il “bit di segno” pari a 1 (rappresenta
un numero negativo) ma è ottenuto dalla somma di due positivi!.
ERRORE TIPICO: complementare i due numeri che in realtà sono positivi
(NB: in questo caso l’esercizio è valutato 0 punti).
44
Fly UP