IL CODICE
BINARIO
• Il codice binario
• Codifica posizionale
• Aritmetica binaria
www.stoianov.it
1
CODIFICA DI BASE
• La voce si distribuisce con onde di frequenze 20-20.000 Hz
• La luce sta nel ordine di 500.000.000.000.000 Hz
• Per poter ricevere informazioni trasportati da loro,
l’evoluzione ha creato diversi sensori.
• Al interno del cervello, il codice neurale di base è lo stesso:
una “spike”.
• Una rappresentazione comune per tutti i tipi di dati permette
l’uso di una sola tecnologia per manipolarle e memorizzarle.
• I circuiti digitali elaborano due tipi di segnale elettrico:
tensione bassa (0) e tensione alta (1)
… ciò permette di codificare informazioni a due livelli – bit.
• Questa CODIFICA BINARIA, anche se in apparenza
limitante, permette elaborazioni precise e affidabili.
www.stoianov.it
2
1
Il CODICE BINARIO
• Un bit ha due livelli: 0 e 1
• Per codificare informazioni a più livelli, aggregare
più bit in una “parola” binaria, per es. “101”
• Ogni bit raddoppia il numero di livelli che possono
essere rappresentati da una parola.
• La parola binaria più conosciuta “byte” ha 8 bit
e permette di codificare informazioni a 256 livelli.
• Tutti i dati in un calcolatore sono codificati con il
codice binario, anche se per la comunicazione
con l’utente si usano altri codici
(lettere:ASCII, numeri: la sistema decimali, ecc).
100 b/s = 100 bit/sec
2.4 kb/s = 2400 bit / sec
parola a 3 bit
000
001
010
011
100
101
110
111
=
=
=
=
=
=
=
=
0
1
2
3
4
5
6
7
10 kB = 10 K Byte = 10 * 1.024 Byte
1 MB = 1 M Byte = 1.048.576 Byte
www.stoianov.it
3
Codificare informazioni “non-numerici”
con il codice binario
000000000000000000000000
000000000011111111000000
000000000010000010000000
000000000010000100000000
000000000010001000000000
000000000010010000000000
000000000010100000000000
000000000011000000000000
000000000010000000000000
IMMAGINE: lo stato momentaneo di
una porzione dello spazio visivo
rappresentato da una matrice di “pixel”
• rappresentazione a “bianco/nero”: 1 bit per pixel: 0:chiaro, 1:scuro (o viceversa)
• rappresentazione in ‘toni di grigio’: 1 byte per pixel, con 256 gradazioni di grigio per punto
• rappresentazione a ‘colori’: 3 bytes x pixel, 1 byte per l’intensità di ciascun dei colori R,G,B
SUONO
pressione sonora
nel tempo
tempo
tempo
• rappresentazione “mono, 10kHz a 8 bit”: l’intensità di un segnale acustico “campionato”
ogni 0.1 ms. e “quantificato” con 1 byte
• rappresentazione “stereo, 20kHz, 16 bit”: l’intensità di due segnali acustici, ciascuno
codificato ogni 0.05 ms con 2 byte.
www.stoianov.it
4
2
CODIFICA POSIZIONALE
Numeri Arabi:
263 = 2*100 + 6*10 + 3*1
= 2*102 + 6*101 + 3*100
Numeri Binari:
101 = 1*4 + 0*2
=1*22 + 0*21
+ 1*1
+ 1*20
In un codice posizionale a base b:
• ciascuna cifra d ha b livelli [ 0 … b-1 ]
• la posizione k vale bk (la più significativa a sinistra)
• il valore del numero [dn-1…d0]b =
dn-1*bn-1 + ... + d0*b0
• un numero con n cifre può codificare bn livelli [0 … bn-1]
www.stoianov.it
5
CONVERSIONE A BASE b
Quale è il codice posizionale a base b di un valore X ?
Algoritmo: dividere k volte il valore X per la base b,
ottenendo una parte intera e resto. Il resto di ogni
divisione k dà la cifra bk-1 alla posizione k-1.
Esempio: X = 25
25 / 2 = 12 resta
12 / 2 = 6 resta
6 / 2 = 3 resta
3 / 2 = 1 resta
1 / 2 = 0 resta
X2=11001
1
0
0
1
1
www.stoianov.it
6
3
Codice Esadecimale: Base 16
• Cifre: 0, 1,
2,
3, 4, 5, 6, 7, 8, 9,
A10, B11, C12, D13, E14, F15
• Il codice esadecimale si trasforma facilmente (d)al
codice binario:
ogni 4 bit = 1 cifra esadecimale
0101
1110
= 9
= E
• Questo codice è molto utilizzato per rappresentare
dati e programmi nel computer, perché “compatta”
numeri binari in gruppi di 4 bit.
www.stoianov.it
7
ARITMETICA BINARIA
Aritmetica con numeri a qualunque base b si effettua
come l’aritmetica decimale, tendendo conto ai:
- riporti (nell’addizione, se la somma ≥ la base b) e
- prestiti (in sottrazione, se il minuendo < il sottraendo)
Se la somma di due cifre binarie supera 2, si fa riporto.
Addizioni semplici
0+ 0+ 1+
1+
0= 1= 0=
1=
0
1
1
10
Addizioni di numeri con più cifre
0110+
0100=
1010
www.stoianov.it
8
4
NUMERI NEGATIVI
• Numeri Arabi:
Codice binario:
• Soluzione:
il simbolo “-” indica numeri negativi.
solo 0 e 1. Come codificare ‘-’ ?
rappresentare il segno con il bit maggiore.
• Tre codifiche (in un codice binario con n bit ):
(A) Segno e modulo
|X|
3 = 0 011
-3 = 1 011
(stessi bit del modulo)
(B) Complimento a base -1 (a uno) 2n - |X| - 1
3 = 0 011
-3 = 1 100
(bit invertiti)
(C) Complimento a base (a due)
2n - |X|
3 = 0 011
-3 = 1 101
(bit invertiti + 1)
www.stoianov.it
9
Complimento a Due
• La codifica “complimento a due” semplifica l’aritmetica.
• Singola rappresentazione di 0 (0000 invece di anche 1111)
• Il codice di –X lungo n bit = il codice binario di 2n -|X|
CODIFICA:
(i) codificare |X| in binario
(ii) invertire i bit di |X|2
(iii) aggiungere 1
Esempio: -3, codice 3+1 cifre
|-3|
Æ 0011
0011
Æ 1100
1100 +1
Æ 1101
DECODIFICA (ottenere il valore assoluto |X|)
(i) invertire i bit di |X|2
1101
Æ 0010
(ii) aggiungere 1
0010 +1 Æ 0011
(iii) calcolare il valore
0011
Æ 0+0+2+1=3
Si nota: un numero negativo ha sempre il bit maggiore 1 ed
un numero positivo ha sempre il bit maggiore 0
www.stoianov.it
10
5
Complimento a 2
Esempi
• 01000 codifica un numero positivo di valore
8
z
00000 codifica un numero “positivo” di valore
0
10001 codifica un numero negativo di valore:
-15(10)
(01110 -> 01111(2) )
z 11111 codifica un numero negativo di valore:
(00000 -> 00001(2 ))
-1(10)
z 10000 codifica un numero negativo di valore:
(01111 -> 1000(2) )
-16(10)
Attenzione, qui “1” codifica valore, ma non segno
perché questo codice non è più il codice
“complimento a 2” ma un semplice codice binario.
z
www.stoianov.it
11
ARITMETICA BINARIA (2)
Somma:
sommare le cifre nelle corrispondente posizioni;
fare riporto se la somma ≥ la base.
Sottrazione: invertire il sottraendo, utilizzando complimento a 2
e quindi sommare i due numeri.
Attenzione! la somma di due numeri entrambi positivi o negativi
potrebbe risultare in risultato con valore assoluto maggiore
della capacità rappresentativa (situazione OVERFLOW).
Individuare l’OVERFLOW:
- se la somma di due numeri positivi risulta un numero “negativo”,
- se la somma di due numeri negativi risulta in un numero “positivo”
- se gli ultimi due riporti sono diversi
www.stoianov.it
12
6
Aritmetica binaria: Esempi
00000
Riporti -> non c'è overflow (ultimi rapporti uguali)
00001 (numero positivo di valore 1(10))
+ 01000 (numero positivo di valore 8(10))
= 01001 (numero positivo di valore 9(10))
00000
Riporti -> non c'è overflow (ultimi rapporti uguali)
00001 (numero positivo di valore 1(10))
+ 11000 (numero negativo di valore: 00111->01000(2)=-8(10))
= 11001 (numero negativo di valore 00110->00111(2)=-7(10))
11000
Riporti
-> non c'è overflow (ultimi rapporti uguali)
01001 (numero positivo di valore 9(10))
+ 11000 (numero negativo di valore: 00111->01000(2)=-8(10))
= 00001 (numero positivo di valore 1(10))
www.stoianov.it
13
Aritmetica binaria: Esempi (2)
10000
Riporti -> situazione OVERFLOW (ultimi rapporti diversi)
10001 (numero negativo di valore 01110->01111(2)=-15(10))
+ 11000 (numero negativo di valore: 00111->01000(2)=-8(10))
= 01001 (overflow nella somma binaria)
01000
Riporti
-> OVERFLOW (ultimi rapporti diversi)
01001 (numero positivo di valore 9(10))
+ 01000 (numero positivo di valore:8(10))
= 10001 (overflow nella somma binaria)
www.stoianov.it
14
7