Cálculo de bits de paridad de código Hamming

0

Necesito calcular el número de bits de paridad necesarios para una palabra determinada (conjunto de bits).

Conozco una forma, pero no siempre funciona, por debajo de mi enfoque actual:

  • longitud de palabra: 8
  • entonces 2 ^ 3
  • luego bits de paridad = 3 + 1

Le hago esto a cualquier palabra dada (2 ^ n bits), pero no funciona para 2 ^ 1 o 2 ^ 2

¿Alguna idea?

Gracias !!!

    
pregunta Cuban coffee

3 respuestas

0

El siguiente código sudo generará el número total de bits de paridad para una palabra dada de un tamaño (2 ^ n bits):

Integer parityBits = 0;

while (powerOf(2, parityBits) < parityBits + wordLength + 1) {
   parityBits++;
}

Nota: no he probado esta solución con palabras con una longitud diferente a (2 ^ n bits)

    
respondido por el Cuban coffee
3

El código de Hamming es simplemente 2 o más bits de paridad sobre diferentes grupos de bits de datos, de modo que si dibuja un diagrama de venn de cada agrupación, encontrará que cada bit de datos pertenece a un grupo único de bits de paridad. De esta forma puedes identificar cualquier bit 1 por error. Por lo tanto, cualquier error de 1 bit es corregible.

Por definición del código de Hamming, las posiciones de bit de paridad están en las ubicaciones 2 a la potencia nula a nula. Así que los bits de paridad ocupan las posiciones 1, 2, 4, 8 ... posiciones.

Ejemplo:

position:  1  2  3  4  5  6  7  8...
bit type: P1 P2 D1 P3 D2 D3 D4 P4...

El primer bit de datos ocupa la tercera posición. Entonces, si seguimos la definición, 1 bit de datos necesita 2 bits de paridad. Realmente no vale la pena. Podemos colocar el siguiente bit de datos en la 5ª posición. Entonces 2 bits de datos necesitan 3 bits de paridad. Todavía no merece la pena. (En ambos casos, simplemente podemos enviar 1 bit de paridad con cada bit de datos, lo que le brinda al receptor la capacidad de detectar y corregir errores). Podemos colocar el siguiente bit de datos en la 6ª posición. Entonces 3 bits de datos solo necesitan 3 bits de paridad. Estamos en el punto de equilibrio con respecto al envío de 1 bit de paridad para cada bit de datos. Podemos colocar el siguiente bit de datos en la séptima posición. Así que 4 bits de datos solo necesitan 3 bits de paridad. No hasta que obtengamos 4 bits de datos, vemos una ventaja al usar el código de Hamming.

Entonces, a medida que construye la secuencia del código de Hamming (dada la secuencia de izquierda a derecha en el ejemplo anterior), necesita todos los bits de paridad a la izquierda del número requerido de bits de datos.

Le dejaré que haga una ecuación para calcular el número de bits de paridad necesarios.

    
respondido por el st2000
0

Debe tener suficientes bits de paridad para cubrir toda la palabra de código: bits de datos MÁS bits de paridad.

Por lo tanto, para 8 bits, necesita al menos 3 bits, 8 + 3 bits = 11 bits. 11 bits requieren 4 bits de paridad, y lo mismo ocurre con 8 + 4 bits, por lo que ha terminado con 4 bits de paridad.

A veces necesitas repetir esto más de una vez para llegar a una respuesta final.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas