Skip to content
logo9minuti120x48
Menu
  • Home
  • Tutorial
    • Zaini
    • Stampa 3d
    • ebook
    • Informatica
  • Scritti
    • Racconti
    • Articoli
    • Temi
    • Storia
  • Video
  • Progetti
    • Progetto Carcere
    • Progetto Istruzione
    • Progetto Acque pulite
    • Progetto Tecnologia
    • Progetto Casa
    • Progetto Democrazia
    • Progetto Immigrazione
    • Storia
    • Progetto Storia
  • Chi siamo
    • LinkTree
  • Privacy Policy
    • Cookie Policy (EU)
  • Blog
  • Donazioni
Menu
rilevazioni errori CRC copertina 1024

Rilevazione errori con CRC – come funziona

Posted on 19 Giugno 2020 by Gabriele

Vi è mai capitato di incappare in qualche errore durante il salvataggio o il trasferimento di un file e provando ad aprirlo o utilizzarlo esso risultasse corrotto? Se la risposta è sì allora la prossima domanda è: vi siete mai chiesti come si riesca a rilevare l’errore?

Benvenuti nel mondo dei codici rilevatori!

Da sempre si è dovuto far fronte al problema della corruzione dei dati, in quanto l’errore può capitare. Le tecniche che vengono utilizzate sono diverse: bit di parità, checksum, codici di Hamming, CRC, ecc.

Nello specifico vedremo come si calcola e come si utilizzata il CRC.

Innanzitutto il CRC (Ciclic Redundancy Check) o codice a ridondanza ciclica è un codice adatto a riscontrare errori di tipo “burst” o a raffica, ovvero errori che compromettono più bit consecutivi. Questo tipo di codice viene anche chiamato codice polinomiale in quanto i bit di dati da controllare possono essere considerati come coefficienti (di valore 0 o 1) di un polinomio che chiameremo M(x). Per calcolare il CRC, oltre al polinomio che rappresenta l’informazione da trasmettere, abbiamo bisogno di un polinomio detto generatore che chiameremo G(x) e che dovrà rispettare alcune regole:

  • G(x) deve essere noto sia al mittente che al destinatario
  • I bit di G(x) di ordine più alto e più basso devono essere a 1
  • il grado di M(x) deve essere maggiore di quello di G(x).

Calcolare CRC

Definiamo le sequenze di bit che utilizzeremo (dati e generatore) e i rispettivi polinomi:

M(x) = 1110

M(x) = (1⋅x3) + (1⋅x2) + (1⋅x1) + (0⋅x0) = x3 + x2 + x1 → Grado 3

 

G(x) = 101

G(x) = (1⋅x2) + (0⋅x1) + (1⋅x0) = x2 + 1 → Grado 2

 

A questo punto “appendiamo” ai bit di M(x) un numero di zeri pari al grado del polinomio G(x):

Sequenza dati e aggiunta dei bit a zero

 

Fatto ciò dividiamo la nuova sequenza per G(x). La parte che ci interessa è il resto. Per fare questa divisione possiamo avvalerci della tabella di verità dell’operatore logico XOR (OR esclusivo):

Calcolo del codice rilvatore CRC

Aggiungere il CRC alla parte dati

Dopo aver calcolato il codice di controllo CRC appendiamolo alla nostra sequenza di dati:

Sequenza con dati e CRC

La sequenza ottenuta verrà spedita al destinatario.

Verifica integrità dati

Una volta che la sequenza è arrivata a destinazione dobbiamo verificarne la correttezza, quindi dividiamo la sequenza per il generatore G(x), che come abbiamo detto prima è noto sia al mittente che al destinatario. Per questa operazione valgono le stesse regole che abbiamo usato in precedenza.

Anche in questo caso dobbiamo porre la nostra attenzione sul resto della divisione. Se il resto è diverso da 0 si è verificato un errore.

Calcolo per la verifica della correttezza dei dati ricevuti

Il risultato è privo di resto, di conseguenza i dati ricevuti sono corretti.

Ora proviamo a vedere cosa succederebbe se la sequenza subisse delle modifiche durante l’invio (in rosso sono evidenziate le modifiche):

Calcolo per la verifica dei dati ricevuti con errore

Come possiamo notare la divisione ci darebbe un resto, quindi i dati ricevuti sarebbero erronei.

Inoltre volevo sottolineare che per la bontà del metodo la scelta del polinomio generatore è molto importante e negli anni si sono affermati diversi tipi di standard. Se vuoi dare un’occhiata clicca qui.

Siamo arrivati alla fine! Se sei interessato a fare altri calcoli prova a vedere come calcolare la subnet mask e gli indirizzi di sottorete, oppure lascia un commento e fammi sapere cosa ne pensi dei codici rilevatori.

A presto,

Gabriele

Dammi un 5 virtuale, clicca like e condividi.

  • Fai clic qui per condividere su LinkedIn (Si apre in una nuova finestra) LinkedIn
  • Fai clic per condividere su Facebook (Si apre in una nuova finestra) Facebook
  • Fai clic per condividere su X (Si apre in una nuova finestra) X
  • Fai clic qui per condividere su Reddit (Si apre in una nuova finestra) Reddit
  • Fai clic per condividere su WhatsApp (Si apre in una nuova finestra) WhatsApp
  • Fai clic per condividere su Telegram (Si apre in una nuova finestra) Telegram
  • Fai clic per inviare un link a un amico via e-mail (Si apre in una nuova finestra) E-mail

Related

3 thoughts on “Rilevazione errori con CRC – come funziona”

  1. Daniele Daniele ha detto:
    6 Gennaio 2022 alle 3:33 pm

    Ciao, sono in sessione d’esame ed il tuo articolo si è dimostrato molto utile.
    Mi è scappato un sorriso alla vista dell’immagine provocatoria green, la situazione è piuttosto drammatica.
    Un saluto!

    Rispondi
    1. Alessandro Oppo Alessandro Oppo ha detto:
      16 Gennaio 2022 alle 8:10 pm

      Ciao Daniele, ti ringrazio. L’articolo è stato scritto da un mio amico (a cui ho girato il tuo feedback).

      Eh sì, la situazione è davvero drammatica! Speriamo bene!

      Rispondi
  2. Eugenio Eugenio ha detto:
    29 Marzo 2024 alle 5:20 pm

    Scusa ma non ho capito come fa 57%5 a non darti resto intero ?

    Rispondi

Cosa ne pensi? Fammelo sapere con un messaggioAnnulla risposta

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

Scoprici sui social

  • YouTube
  • Telegram
  • Facebook
  • RSS Feed

    Ultimi post

    • Dave dei Vallanzaska: AI, Milano e venti di guerra – Riflessioni su 30 anni di cambiamenti
    • Libri e Social: Intervista a Sam di Rivista Matrioska | Come Creare un Progetto Culturale Online
    • Solo l’occidente conosce la Storia? Dialogo col Professor Adolfo Scotto Di Luzio
    • Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?
    • Siamo quel che facciamo? – racconto breve
    • Il limite è sempre la mente – Racconto breve
    • L’ultimo giorno del carcere – Racconto breve

    Newsletter

    • YouTube
    • Facebook
    • Telegram
    • Dave dei Vallanzaska: AI, Milano e venti di guerra – Riflessioni su 30 anni di cambiamenti
      di Alessandro Oppo
    • Libri e Social: Intervista a Sam di Rivista Matrioska | Come Creare un Progetto Culturale Online
      di Alessandro Oppo
    • Solo l’occidente conosce la Storia? Dialogo col Professor Adolfo Scotto Di Luzio
      di Alessandro Oppo
    • Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?
      di Alessandro Oppo
    • Siamo quel che facciamo? – racconto breve
      di Alessandro Oppo

    ©2025 9minuti | Design: Newspaperly WordPress Theme
    Manage Cookie Consent
    Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
    Cookie funzionali Sempre attivo
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    Gestisci opzioni Gestisci servizi Gestisci {vendor_count} fornitori Per saperne di più su questi scopi
    Visualizza preference
    {title} {title} {title}
     

    Caricamento commenti...