Codifica binaria e rappresentazione dell`informazione

Fondamenti di Informatica
10110
01100
01011
Rappresentazione dell’informazione
Codifica Binaria
Fondamenti di Informatica - D. Talia - UNICAL
1
Rappresentazione dell’informazione
10110
01100
01011
„
„
„
„
Tutta l'informazione in un calcolatore è rappresentata
tramite numeri.
Questi numeri sono espressi come sequenze di 0 e 1.
I calcolatori elaborano l'informazione effettuando
operazioni su numeri.
I sistemi di comunicazione scambiano informazioni
spostando sequenze di numeri.
Fondamenti di Informatica - D. Talia - UNICAL
2
Rappresentazione dell’informazione
10110
01100
01011
„
I computer sono sistemi digitali perché lavorano con digit (0
e 1).
„
Bit : valore 0 (tensione bassa), valore 1 (tensione alta).
„
Byte: sequenza di 8 bit. Esempio: 01110010
„
L’informazione viene creata ed acceduta in unità di informazione
dette word. Una word è creata come un multiplo di byte.
„
Lunghezze di una word: 8 (byte), 16, 32, 64, 128 bit.
„
Un word a k bit può contenere 2k valori (da 0 a 2 k-1).
Fondamenti di Informatica - D. Talia - UNICAL
3
Numeri Naturali
10110
01100
01011
„
„
„
„
Numerazione araba: dieci cifre (0..9), notazione
posizionale : il valore di una cifra dipende dalla sua
posizione.
La cifra più a sinistra ha un valore maggiore.
Ad esempio: 312, le tre cifre hanno valore diverso a
secondo della posizione che occupano.
La numerazione romana è non posizionale ma
additiva. Ad esempio: MCCCX.
Fondamenti di Informatica - D. Talia - UNICAL
4
Numeri Naturali
10110
01100
01011
„
Sistemi di numerazione posizionale a base p :
Se si ha il numero anan-1an-2…..a0
N p = an × p n + an −1 × p n −1 + ... + a1 × p1 + a0 =
n
∑
ai × p i
i =0
„
Se p = 10 si ha che
745 = 7 × 102 + 4 × 101 + 5 × 100
„
Se p = 4 si ha che
213 = 2x42 + 1x41 + 3x42
Fondamenti di Informatica - D. Talia - UNICAL
5
Numeri Binari, Ottali, Esadecimali
10110
01100
01011
Sistema binario
„
p=2
„
alfabeto ={0, 1}
10101101 = (1x27+0x26 + 1x25 + 0x24 + 1x23 + 1x22 + 0x21 + 1x20)
= (128 + 32 + 8 + 4 + 1) = 17310
01101010 = (0x27+1x26 + 1x25 + 0x24 + 1x23 + 0x22 + 1x21 + 0x20)
= (64 + 32 + 8 + 2 ) = 10610
00101111 = (0x27+0x26 + 1x25 + 0x24 + 1x23 + 1x22 + 1x21 + 1x20)
= (32 + 8 + 4 + 2 + 1) = 4710
Fondamenti di Informatica - D. Talia - UNICAL
6
Numeri Binari, Ottali, Esadecimali
10110
01100
01011
Sistema ottale
„
p=8
„
alfabeto ={0, 1, 2, 3, 4, 5, 6, 7}
2548 = 2x82 + 5x81 + 4x80 = 128 + 40 + 4 = 17210
Sistema esadecimale
„
p=16
„
alfabeto ={0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, A, B, C, D, E, F}
B7F16 = 11x162 + 7x161 + 15x160 = 294310
Fondamenti di Informatica - D. Talia - UNICAL
7
Numeri Binari, Ottali, Esadecimali
10110
01100
01011
decimale
binario
ottale
esadecimale
0
0000
0
0
1
0001
1
1
2
0010
2
2
3
0011
3
3
4
0100
4
4
5
0101
5
5
6
0110
6
6
7
0111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F
16
10000
20
10
Fondamenti di Informatica - D. Talia - UNICAL
8
Conversione da base 2 a base 10
10110
01100
01011
„
Si divide il numero per due e si prende il resto
173 : 2 = 86
86
43
21
10
5
2
1
„
Æ
:2
:2
:2
:2
:2
:2
:2
1
= 43
= 21
= 10
=5
=2
=1
=0
Æ
Æ
Æ
Æ
Æ
Æ
Æ
0
1
1
0
1
0
1 Î 10101101
L’elenco dei resti si legge dal basso verso l’alto.
Fondamenti di Informatica - D. Talia - UNICAL
9
Conversione da base 2 a base 8 e 16
10110
01100
01011
„
„
La conversione da base 2 a base 8 e base 16 è
abbastanza semplice.
Conversione da base 2 a base 8
„
„
Si divide il numero in triple e ogni tripla si traduce nella
cifra ottale ( 01.101.100 Æ 154).
Conversione da base 2 a base 16
„
Si divide il numero in quadruple e ogni quadrupla si
traduce nella cifra esadecimale ( 0011.1011 Æ 3B).
Fondamenti di Informatica - D. Talia - UNICAL
10
Codifica dei Numeri interi
10110
01100
01011
„
„
Numeri Interi : numeri naturali + 0 + negativi.
E’ quindi necessario rappresentare il segno del
numero, per questo si usa il bit del segno
„
„
„
„
0 Æ + (numeri positivi),
1 Æ - (numeri negativi).
NB: nelle variabili short, int e long non si possono
rappresentare tutti i valori interi (che sono infiniti) ma solo i
valori che si possono memorizzare in 16, 32 e 64 bit.
Occorre porre attenzione al problema del trabocco (overflow).
Fondamenti di Informatica - D. Talia - UNICAL
11
Codifica dei Numeri reali
10110
01100
01011
„
„
Naturalmente in informatica esiste anche la difficoltà di
rappresentare i numeri reali (che è un insieme denso) con un
numero finito di bit.
Due possibili rappresentazioni:
„
„
„
„
Virgola fissa,
Virgola mobile.
Rappresentazione in virgola fissa: si stabilisce a priori la
posizione del punto decimale e quindi le cifre si suddividono in
due parti.
Numero fissato di bit per la parte intera e per la parte
frazionaria. Ad esempio: 6935.14084 oppure 5765430.192
Fondamenti di Informatica - D. Talia - UNICAL
12
Codifica dei Numeri reali
10110
01100
01011
„
Rappresentazione in virgola mobile (floating point):
numero variabile di bit per le due parti.
Mantissa :
valore m tra -1 e 1 (frazionario)
Caratteristica: esponente n
R = mxbn
43536381816 12
m
„
„
„
n
E’ possibile rappresentare numeri molto grandi con poche
cifre oppure con precisione numeri molto piccoli.
Normalizzazione: .0043536 x 104
Æ .43536 x 102
Il problema dell'approssimazione dei numeri reali tuttavia
rimane ed è viene studiato nel settore del calcolo numerico.
Fondamenti di Informatica - D. Talia - UNICAL
13
Codifica dei Caratteri
10110
01100
01011
„
„
„
Viene usato un codice di traduzione: ad ogni carattere è
assegnato un valore tramite una sequenza di bit.
Il codice finora più usato è il codice
ASCII (American Standard Code for Information Interchange)
che usa 7 o 8 bit per rappresentare fino a 256 caratteri.
Contiene tre classi di caratteri:
„
„
Caratteri di comando/controllo, caratteri alfanumerici e segni.
Nelle operazioni di trasmissione l’ottavo bit si usa come bit di
parità.
Fondamenti di Informatica - D. Talia - UNICAL
14
Codifica dei Caratteri
10110
01100
01011
„
„
„
„
L’estensione dello standard ASCII è il codice UNICODE.
Lo standard UNICODE estende il codice ASCII e lo assorbe
(fino ai primi 128 caratteri è uguale) per rappresentare altri
alfabeti ed un set più ampio di caratteri (lettere accentate ecc.).
Usa 16 bit per rappresentare un numero molto grande di
caratteri.
Per questa ragione le variabili di tipo char in Java sono
rappresentate tramite 16 bit.
Fondamenti di Informatica - D. Talia - UNICAL
15