Hardware e software
Hardware: parti fisiche di un computer.
Software: insieme di dati e istruzioni che indicano al computer come lavorare (CPU parla in codice macchina).
Diversi linguaggi di programmazione.
Convertire numeri da una base all'altra
(65)8 = (110 101)2
(17)8 = (001 111)2
(101100)2 = (101 100)2 = (54)8
(100010)2 = (100 010)2 = (42)8
Hardware: parti fisiche di un computer.
Software: insieme di dati e istruzioni che indicano al computer come lavorare (CPU parla in codice macchina).
Diversi linguaggi di programmazione.
Convertire numeri da una base all'altra
(65)8 = (110 101)2
(17)8 = (001 111)2
(101100)2 = (101 100)2 = (54)8
(100010)2 = (100 010)2 = (42)8
(AF)16 = (1010 1111)2
(1C)16 = (0001 1100)2
(10111001)2 = (1011 1001)2 = (B9)16
(00001001)2 = (0000 1001)2 = (09)16
Operazioni in altre basi
1 1 1 0 + 6 + 1 0 = 2 = 1 0 0 0 8
1 1 1 0 - 1 4 - 1 1 = 3 = 1 0 1 1 1 1
Rappresentazione in modulo e segno
Come si trasforma 12 in -12?
1 Metodo
1 0 0 1 1 0 0 = -12
0 0 0 1 1 0 0 = +12
2° metodo: complemento a uno
Si invertono tutti i bit.
3° metodo: complemento a due
x = (0110)2 = 6
x = (1001)2
x + 1 = (1010)2 = -6
x = (0101)2 = 5
x = (1010)2
x + 1 = (1011) = -5
Complemento a due: condizioni di overflow
Somma di A, B > 0. Se A + B ≥ 2n-1
Somma di A, B < 0. Se A + B ≤ 2n-1
Se gli ultimi due riporti sono discordi.
010111 + 0001 = 100000
01100 + 00001 = 01101
10100 + 10101 = 01001
110111 + 11101 = 10100
Rappresentazione di base
12,395 = 1,2395 101
32 31 23 0
Sign Exponent Mantissa
Un numero reale (float) ha dimensione 32 BIT: sign s 1 bit, exponent e 8 bit, mantissa m 23 bit.
Codifica e codici
Dati N elementi da rappresentare, n cifre binarie disponibili per la codifica e m = ⎡log2N⎤.
Se n = m, il codice è irridondante.
Se n > m, il codice è ridondante.
k = n - m cifre di controllo.
Codici irridondanti: ASCII, BCD, GRAY.
Distanza di Hamming
Numero minimo di cifre diverse tra due parole del codice.
d(10010, 01001) = 4
d(11010, 11002) = 2
h = min (d(x,y)) x ≠ y
h = 1 se codice è irridondante.
Un codice ridondante è capace di rivelare errori di peso ≤ h-1.
Codici ridondanti di grande importanza per riconoscere o correggere errori.
Codice di parità
Codice ridondante con h = 2.
Si ottiene aggiungendo una cifra di parità ad un codice irridondante.
Parità: 1 se il numero di 1 è dispari.
Disparità: 1 se il numero di 1 è pari.
| Codice irridondante | Parità | Disparità |
|---|---|---|
| 0000 | 1 | 0 |
| 0110 | 0 | 1 |
| 0010 | 1 | 1 |
| 0101 | 0 | 1 |
| 1011 | 0 | 0 |
| 1110 | 0 | 1 |
Esempio con parità pari
Trasmettere 101.
Generatore di parità calcola P = 0.
Viene trasmesso 1010.
| Ricevuto | Parità | Segnale errore |
|---|---|---|
| 1010 | = 0 | Ok |
| 1110 | = 1 | Errore |
| 1111 | = 0 | Ok |
Codici di Hamming
Costruzioni codici h ≥ 3.
Parole di m = n + k cifre, con n ≤ 2k - k - 1:
Bit in posizione 2i sono bit di parità.
Bit di parità controlla bit di informazione con 1 nella potenza di 2 corrispondente al bit di parità.
| Posizione cifra | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dato codificato | p1 | p2 | d1 | p4 | d2 | d3 | d4 | p8 | d5 | d6 | d7 | d8 | d9 | d10 | d11 | p16 | d12 | d13 d14 d15 |
Copertura bit di parità
p1 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
p2 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
p4 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
p8 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
p16 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
Esempio
Trasformare valore ASCII a n = 7 bit in codice Hamming h = 3.
n ≤ 2k - k - 1, k = 4, m = 11.
Bit parità: funzione 1, 2, 4, 8.
Codifichiamo (0110000).
| 1 | p1 |
| 2 | p2 ✓ |
| 3 | ✓ ✓ |
| 4 | p4 ✓ ✓ ✓ |
| 5 | 1 ✓ |
| 6 | ✓ |
| 7 | ✓ ✓ |
| 8 | p8 ✓ ✓ ✓ |
| 9 | 0 ✓ |
| 10 | 0 ✓ |
| 11 | 0 ✓ ✓ ✓ ✓ |