Qué dígitos cuentan, la dispersión de 40 bits y el caso del EAN-8
Nota: esta página trata de los códigos JAN/EAN comerciales. El Datach lee además un formato propietario de cartas de Bandai que funciona con otras reglas — véase 4. El código de barras de Bandai.
日本語 | English | Français | Español | Italiano | 한국어
Los 13 dígitos de un código EAN-13 se numeran de d1 a d13 desde la izquierda. Para 4902773230126 eso significa d1=4, d2=9, y así hasta d13=6. Cada dígito vale de 0 a 9; sus bits se escriben b0 (el menos significativo) a b3. Así, d6=7 da b0=1, b1=1, b2=1, b3=0.
Primer hecho importante. Solo d3 a d12 alimentan el cálculo del personaje y de las estadísticas. Los dos primeros dígitos (el prefijo de país) y el dígito de control final no influyen en el resultado. Así, 4902773230126 y 4502773230128 (prefijo cambiado a 45, dígito de control recalculado) producen exactamente el mismo resultado. Los jugadores habían deducido experimentalmente que el prefijo de país «no hacía nada»; leer el programa confirma que está implementado así.
Que el dígito de control no se use en el cálculo no significa que pueda ponerse a capricho. El lector, que va antes del cálculo, sí lo verifica, y una secuencia que falla esa comprobación se detiene ahí. Por eso en el ejemplo anterior se recalcula el dígito de control tras cambiar el prefijo: un código en el que solo se altere el dígito de control ni siquiera se leerá. Dicho con precisión, el dígito de control no interviene en el cálculo del resultado, pero sirve para validar la lectura. Esto salió a la luz al rastrear las discrepancias en los registros; la historia está en la página de curiosidades.
Los diez dígitos d3–d12 se dividen cada uno en cuatro bits (b0–b3). Los 40 bits resultantes se redistribuyen bit a bit en cinco registros internos R0–R4, según una tabla fija.
Esto es lo que hacía tan difícil descifrar el sistema desde fuera. La información de dígitos contiguos se lanza a posiciones de bit lejanas, así que ningún experimento dígito a dígito llega a mostrar un patrón regular.
La tabla completa. Las columnas son el bit de origen; cada celda indica el registro y la posición de bit de destino.
| Dígito | b0 va a | b1 va a | b2 va a | b3 va a |
|---|---|---|---|---|
| d3 | R3 bit7 | R2 bit4 | R4 bit4 | R3 bit4 |
| d4 | R0 bit5 | R2 bit0 | R3 bit6 | R3 bit3 |
| d5 | R1 bit1 | R3 bit0 | R0 bit3 | R4 bit0 |
| d6 | R1 bit3 | R1 bit5 | R0 bit0 | R4 bit3 |
| d7 | R0 bit7 | R0 bit1 | R1 bit7 | R3 bit2 |
| d8 | R1 bit4 | R2 bit3 | R4 bit5 | R2 bit2 |
| d9 | R2 bit7 | R1 bit0 | R2 bit6 | R4 bit6 |
| d10 | R0 bit2 | R4 bit1 | R3 bit1 | R3 bit5 |
| d11 | R1 bit2 | R2 bit1 | R0 bit4 | R4 bit2 |
| d12 | R0 bit6 | R4 bit7 | R1 bit6 | R2 bit5 |
Cuarenta bits se corresponden con cuarenta bits sin que sobre nada: la aplicación es biyectiva. No se descarta información, solo se reordena.
R0–R4 se tratan luego como un único flujo de 40 bits, consumido desde el principio (el bit más significativo de R0). El consumo reparte exactamente los 40 bits:
| Bits leídos | Uso | Detalle |
|---|---|---|
| 2 | Casilla de objeto o de personaje | Página 2 |
| 8 | Sorteo ponderado del personaje | |
| 3 | Nivel de la técnica especial | Página 3 |
| 9 × 3 | PV, BP, DP (nueve bits cada uno) |
Los códigos de 8 dígitos de los cigarrillos y de los artículos pequeños también se leen. El juego toma los ocho dígitos o1–o8 y los pliega sobre sí mismos para construir diez dígitos efectivos, y después aplica exactamente el mismo proceso que al EAN-13. Los diez efectivos son:
[o3, o4, o5, o6, o7, o8, o7, o6, o5, o4]
Un código EAN-8 lleva, pues, solo seis dígitos de información (o3–o8), y o4–o7 se usan dos veces cada uno. Una consecuencia curiosa: el dígito de control del EAN-8 (o8) sí participa en el cálculo, al contrario que en el EAN-13. Así que en un código de 8 dígitos, equivocarse solo en o8 se manifiesta como una estadística desplazada — que es justo la propiedad que permitió resolver los registros discrepantes.