Calculadora de división larga CRC / XOR / módulo 2
Calculadora de división larga CRC / XOR / módulo 2
Output: CRC remainder after XOR long division.
La calculadora de división larga CRC / XOR / módulo 2 realiza división binaria sin acarreos ni préstamos, usando XOR bit a bit en cada paso. Esta es la aritmética detrás de las comprobaciones de redundancia cíclica (CRC): el mensaje se amplía con bits cero y se divide entre un polinomio generador, y el resto se convierte en la suma de comprobación CRC. Como la suma y la resta módulo 2 son ambas XOR, cada paso es una comparación sencilla de bits. Introduce una palabra de datos y un generador (divisor) para ver cada alineación, cada XOR y el resto final usado como CRC.
Cómo usar la calculadora de división larga CRC / XOR / módulo 2
Para calcular un CRC por división módulo 2, sigue estos 4 pasos:
- Introduce el mensaje binario (bits de datos) en el primer campo.
- Introduce el polinomio generador como bits binarios en el segundo campo.
- La calculadora añade (n − 1) bits cero, donde n es la longitud del generador.
- Haz clic en Calcular para ir haciendo XOR a lo largo del mensaje y lee el resto como CRC.
El cociente suele descartarse en el trabajo con CRC — el resto es la suma de comprobación que se añade al mensaje antes de la transmisión.
CRC y aritmética módulo 2
Una comprobación de redundancia cíclica detecta errores de transmisión tratando un mensaje como un polinomio binario grande y dividiéndolo entre un polinomio generador acordado. La división se hace en aritmética módulo 2 (GF(2)), donde suma y resta son idénticas e iguales a XOR — no hay acarreos ni préstamos. El resto de esa división es el CRC. Cuando el receptor divide el mensaje más el CRC entre el mismo generador, un resto 0 significa que no se detectó error. Esta calculadora reproduce ese proceso bit a bit exacto.
La división reparte un total en grupos iguales. La división larga lo hace cifra por cifra.
Divisor (32): el número por el que divides. Colócalo a la izquierda del corchete.
Cómo funciona la división CRC módulo 2
La calculadora calcula el CRC mediante cinco acciones internas:
- Añade (n − 1) bits cero al mensaje, donde n es el número de bits del generador.
- Alinea el generador bajo el bit 1 más a la izquierda del resto actual.
- Hace XOR del generador con esos bits (resta módulo 2 sin préstamo).
- Se desplaza al siguiente bit 1 principal y repite la alineación XOR.
- Se detiene cuando quedan menos bits que el generador; esos bits son el CRC.
Cada bit del cociente es 1 donde el generador entra por XOR y 0 en el resto, pero para CRC solo importa el resto final.
Añade (n − 1) bits cero al mensaje, donde n es el número de bits del generador.
Fórmula de la división CRC
La calculadora de división larga CRC / XOR / módulo 2 calcula CRC = (M(x) · xⁿ⁻¹) mod G(x) en GF(2), donde M(x) es el mensaje, G(x) es el generador de n bits y todas las sumas son XOR. La trama transmitida es M(x)·xⁿ⁻¹ + CRC, que G(x) divide exactamente. En recepción, un resto cero confirma la integridad.
Problemas de ejemplo CRC / XOR
Estos ejemplos muestran división módulo 2 con XOR en cada paso.
Ejemplo 1 — Mensaje 1101, generador 101
- Longitud del generador 3, así añade 2 ceros: 1101 pasa a 110100.
- Hace XOR 101 en los bits principales repetidamente: 110100 → 011100 → 001000 → 000010.
- Los últimos 2 bits, 10, son el resto CRC.
Ejemplo 2 — Por qué la resta es XOR
- En módulo 2, 1 + 1 = 0 y 1 − 1 = 0, así sumar y restar son la misma operación.
- Esa operación es exactamente XOR bit a bit, sin acarreo ni préstamo.
- Así cada paso de división es un XOR del generador en los bits actuales.
Ejemplo 3 — Comprobación en el receptor
- Añade el CRC al mensaje y divide entre el mismo generador.
- Haz XOR hacia abajo exactamente como antes.
- Un resto 0 significa que no se detectó error.
Longitud del generador 3, así añade 2 ceros: 1101 pasa a 110100. Hace XOR 101 en los bits principales repetidamente: 110100 → 011100 → 001000 → 000010. Los últimos 2 bits, 10, son el resto CRC.
En módulo 2, 1 + 1 = 0 y 1 − 1 = 0, así sumar y restar son la misma operación. Esa operación es exactamente XOR bit a bit, sin acarreo ni préstamo. Así cada paso de división es un XOR del generador en los bits actuales.
Añade el CRC al mensaje y divide entre el mismo generador. Haz XOR hacia abajo exactamente como antes. Un resto 0 significa que no se detectó error.
Problemas CRC resueltos
¿Cómo calculas el CRC de 10110 con generador 1011?
Añade 3 ceros (longitud del generador 4) para obtener 10110000, luego haz XOR hacia abajo. Alinea 1011 bajo cada 1 principal y haz XOR: 10110000 → 00100000 → tras sucesivos XOR los 3 bits finales forman el resto CRC. Luego el resto se añade a 10110 para que la trama completa sea divisible por 1011 sin resto.
¿Por qué un resto cero significa que los datos están intactos?
El emisor eligió el CRC para que la trama transmitida sea múltiplo exacto del generador. Cualquier múltiplo de G(x) dividido por G(x) deja resto 0. Si los bits cambian en tránsito, la trama ya no suele ser múltiplo, así la división del receptor deja un resto distinto de cero, señalando un error.
Errores frecuentes CRC / módulo 2
La división CRC módulo 2 produce 5 errores frecuentes:
- Usar resta binaria ordinaria con préstamos en lugar de XOR.
- Añadir un número incorrecto de bits cero (debe ser la longitud del generador menos uno).
- Alinear el generador bajo un bit 0 en lugar del 1 principal.
- Tratar acarreos como si existieran en aritmética GF(2).
- Informar del cociente como CRC en lugar del resto.
La calculadora de división larga CRC / XOR / módulo 2 hace XOR en cada paso, añade los ceros correctos y devuelve el resto como suma de comprobación.
Preguntas frecuentes
¿Qué es la división módulo 2?
¿Qué es la división módulo 2?
¿Cómo se calcula un CRC?
¿Por qué se usa XOR en lugar de la resta normal?
¿Cuántos bits cero añado al mensaje?
¿Cómo comprueba el receptor el CRC?
¿Importa el cociente en CRC?
¿Qué es el polinomio generador?
La identidad CRC
La calculadora de división larga CRC / XOR / módulo 2 usa CRC = (M(x)·xⁿ⁻¹) mod G(x) en GF(2), así la trama transmitida M(x)·xⁿ⁻¹ + CRC es exactamente divisible por G(x). Como un múltiplo del generador deja resto 0, la división módulo 2 del receptor devuelve 0 cuando los datos están intactos.