Citation:
Moui. j'ai un peu regardé rapidement le code. Je ne comprends pas trop pourquoi tu distingues e1 e2 e3 (je pense que ce sont les bits de Hamming) différents de 0 ou bien tous à 0. Imaginons par exemple que tu aies 0001 0000. Ca donne e1, e2 et e3 à 0 0 0 mais justement ils ne devraient pas l'être. Ils devraient être à 1 0 1 ce qui indique que le bit erroné est le 5° mais avec ta distinction tu ne le corriges pas.
J'ai e1 = a1 xor a3 xor a5 xor a7
Citation:
Utilise des notations hexa quand tu fais des opérations de bits (& 0x01 au lieu de & 1). Déjà c'est plus explicite surtout dans la hiérarchie des nombres (0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000 plus "élégants" visuellement que 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768). Pareil avec 1<<0, 1<<1 et 1<<2. On voit bien l'effort d'unification de la formulation qui amène naturellement 1<<3 si ça devait continuer mais en l'écrivant 0x1, 0x10, 0x0100 ça le fait aussi (et 0x1000 arrive tout aussi naturellement).
Merci pour le conseil, j'y tâcherai désormais :)