PDA

View Full Version : hamming


mastropiero89
12-03-2011, 10:11
salve ragazzi, dovrei fare un programma in c per la codifica di hamming , ma prima dovrei svolgere degli esercizi per capire come funziona , rovistando tra gli appunti di architettura degli elaboratori mi sono trovato di fronte a questo esercizio che non riesco a svolgere:
Quali tra le seguenti rappresenta il valore corretto di un codice di Hamming con h=3 del valore originario: 0x2B18

a) 0DB1CB b) 2531CB c) 0531CB d) 05B1CB e) 1531CB


qualcuno sapremme spiegarmi e trovarmi la soluzione?

Gin&&Tonic
12-03-2011, 12:57
ma è in esadecimale? io ricordo che per "Hamming " di aveva una stringa e bisognava con numeri decimali

mastropiero89
12-03-2011, 16:49
si è in esadecimale ;)

wingman87
13-03-2011, 01:26
salve ragazzi, dovrei fare un programma in c per la codifica di hamming , ma prima dovrei svolgere degli esercizi per capire come funziona , rovistando tra gli appunti di architettura degli elaboratori mi sono trovato di fronte a questo esercizio che non riesco a svolgere:
Quali tra le seguenti rappresenta il valore corretto di un codice di Hamming con h=3 del valore originario: 0x2B18

a) 0DB1CB b) 2531CB c) 0531CB d) 05B1CB e) 1531CB


qualcuno sapremme spiegarmi e trovarmi la soluzione?
Ciao, non ho capito cos'è h=3, comunque ho provato a svolgere l'esercizio così come avevo imparato io.

Prima di tutto converti il numero esadecimale da trasmettere in binario:
2B18 -> 0010 1011 0001 1000

Poi posizioni i bit di parità (io li ho indicati con delle X)
->0 0101 X011 0001 X100 X0XX
Come vedi i bit di parità sono nelle posizioni che sono potenze di due (le posizioni si numerano da destra a sinistra partendo da 1): 1, 2, 4, 8, e 16.

Piccola digressione (importante):
ogni numero può essere visto come la somma di potenze di 2 (così funziona la codifica binaria). Es: 5 -> 4+1 ; 13 -> 8+4+1 ; 7 -> 4+2+1.
Fine digressione

Ogni bit di parità controlla un certo insieme di bit. Quali? Quelli la cui posizione contiene la posizione del bit di parità nella scomposizione in somma di potenze di 2.

Ora consideriamo un bit di parità per volta. Nelle prime righe sono evidenziati i bit rilevanti, nelle seconde il bit X è stato sostituito dal valore di parità corretto

Bit 1
->0 -1-1 -0-1 -0-1 -1-0 -0-X
->0 0101 X011 0001 X100 X0X1

Bit 2
->- -10- -01- -00- -10- -0X-
->0 0101 X011 0001 X100 X011

Bit 4
->0 0--- -011 0--- -100 X---
->0 0101 X011 0001 X100 1011

Bit 8
->- ---- -011 0001 X--- ----
->0 0101 X011 0001 1100 1011

Bit 16
->0 0101 X--- ---- ---- ----
->0 0101 0011 0001 1100 1011
Infine torno all'esadecimale:
0 0101 0011 0001 1100 1011 -> 0531CB