Le code CIRC

Procédure de codage

  1. L'information à coder est découpée en blocs de 24 octets.
    x0 = (x0,0,x0,1,...,x0,23)
    x1 = (x1,0,x1,1,...,x1,23)
      ...
    xi = (xi,0,xi,1,...,xi,23)
      ...
  2. Chaque bloc xi est codé à l'aide de C1 en autant de blocs yi de 28 octets (on a bien sur yi,j=xi,j pour tout j<24)
    y0 = (y0,0,y0,1,...,y0,23,y0,24,y0,25,y0,26,y0,27)
    y1 = (y1,0,y1,1,...,y1,23,y1,24,y1,25,y1,26,y1,27)
      ...
    yi = (yi,0,yi,1,...,yi,23,yi,24,yi,25,yi,26,yi,27)
      ...
  3. Les yi sont placés dans une table d'entrelacement à retard 4 (comportant 28 lignes), c'est-à-dire que l'octet yi,j se trouve sur la j-ème ligne et la (i+4j)-ème colonne.

    Le remplissage de la table sous le premier mot de code et au dessus du drenier se fera de façon arbitraire, par exemple avec des zéros.
  4. Quatre lignes sont ajoutées au tableau en codant chaque colonne à l'aide du code C2.
  5. Le résultat est inscrit sur le support colonne par colonne.

Procédure de décodage

  1. On lit les octets par blocs (colonnes) de 32 octets.
  2. On essaye de corriger une erreur dans chaque colonne à l'aide d'un décodeur de C2. En cas d'échec on marque la colonne comme effacée.
  3. On récupère une table de 28 lignes d'octets -- dont certaines colonnes sont marquées comme effacées -- dont on extrait des blocs de 28 octets (voir dessins et procédure de codage). Tout bloc comportant 4 effacements ou moins sera corrigé à l'aide du décodeur de C1. S'il y a 5 effacements ou plus dans un bloc, il n'y a rien à faire.