Quali cifre contano, la dispersione a 40 bit e il caso dell'EAN-8
Nota: questa pagina riguarda i codici JAN/EAN commerciali. Il Datach legge anche un formato proprietario per le carte Bandai che segue regole diverse — vedi 4. Il codice a barre Bandai.
日本語 | English | Français | Español | Italiano | 한국어
Le 13 cifre di un codice EAN-13 sono numerate da d1 a d13 partendo da sinistra. Per 4902773230126 significa d1=4, d2=9, e così via fino a d13=6. Ogni cifra vale da 0 a 9; i suoi bit si scrivono b0 (il meno significativo) fino a b3. Quindi d6=7 dà b0=1, b1=1, b2=1, b3=0.
Primo fatto importante. Solo d3-d12 alimentano il calcolo del personaggio e delle statistiche. Le due cifre iniziali (il prefisso paese) e la cifra di controllo finale non hanno effetto sul risultato. Così 4902773230126 e 4502773230128 (prefisso cambiato in 45, cifra di controllo ricalcolata) producono esattamente lo stesso risultato. I giocatori avevano capito per prova ed errore che il prefisso paese «non faceva nulla»; leggere il programma conferma che è implementato proprio così.
Che la cifra di controllo non serva al calcolo non significa che la si possa scegliere a piacere. Il lettore, che sta prima del calcolo, la verifica eccome, e una sequenza che non supera quel controllo si ferma lì. Per questo nell'esempio sopra la cifra di controllo è ricalcolata dopo il cambio di prefisso: un codice in cui sia stata modificata solo la cifra di controllo non verrà nemmeno letto. Per essere precisi, la cifra di controllo non partecipa al calcolo del risultato ma serve a validare la lettura. La cosa è emersa inseguendo le discordanze nelle registrazioni; il racconto è nella pagina delle curiosità.
Le dieci cifre d3–d12 vengono divise ciascuna in quattro bit (b0–b3). I 40 bit risultanti sono ridistribuiti un bit alla volta in cinque registri interni R0–R4, secondo una tabella fissa.
È questo che rendeva il sistema così difficile da capire dall'esterno. L'informazione di cifre vicine viene scagliata in posizioni di bit lontane, così nessun esperimento cifra per cifra fa mai emergere uno schema regolare.
La tabella completa. Le colonne sono il bit di origine; ogni cella indica registro e posizione di bit di destinazione.
| Cifra | 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 |
Quaranta bit si mappano su quaranta bit senza avanzi: la corrispondenza è biunivoca. Nessuna informazione viene scartata, solo riordinata.
R0–R4 vengono poi trattati come un unico flusso di 40 bit, consumato dall'inizio (il bit più significativo di R0). Il consumo copre esattamente 40 bit:
| Bit letti | Uso | Dettaglio |
|---|---|---|
| 2 | Casella oggetto o casella personaggio | Pagina 2 |
| 8 | Estrazione pesata del personaggio | |
| 3 | Livello della tecnica speciale | Pagina 3 |
| 9 × 3 | HP, BP, DP (nove bit ciascuno) |
Anche i codici a 8 cifre di sigarette e piccoli articoli sono leggibili. Il gioco prende le otto cifre o1–o8 e le ripiega su sé stesse per costruire dieci cifre effettive, poi esegue esattamente lo stesso processo dell'EAN-13. Le dieci effettive sono:
[o3, o4, o5, o6, o7, o8, o7, o6, o5, o4]
Un codice EAN-8 porta quindi solo sei cifre di informazione (o3–o8), e o4–o7 sono usate due volte ciascuna. Conseguenza curiosa: la cifra di controllo dell'EAN-8 (o8) partecipa eccome al calcolo, a differenza del caso EAN-13. Su un codice a 8 cifre, sbagliare la sola o8 si manifesta come una statistica spostata — ed è esattamente la proprietà che ha permesso di sciogliere le registrazioni discordanti.