Calcul de parité et de checksum

Résolu
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 27 janv. 2006 à 21:25
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 28 janv. 2006 à 01:10
Pour un programme embarqué, je dois calculer la parité des 7 bits de poids faibles d'un octet. Je viens ici demander des conseils. Je ne vois qu'une seule solution pour calculer cette parité, mais le calcul revenant souvent, il faut qu'il soit fait de façon ptimal. Pour moi, il faut que je prennes les bits de mon octet un a un et que je fasse un xor avec mon bit de parité, mais n'y a-t-il pas plus rapide?

Je vais poser la même question quand au checksum, la seule différence étant qu'il doit s'effectuer sur 13 bits et que la taille du résultat du checksum eest sur 3 bits.

Si jamais vous pensez à qqch qui permettrait d'éviter les boucles pour effectuer ces calculs...

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
A voir également:

3 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 janv. 2006 à 00:40
Pour la parité, un table précalculée sera plus rapide, elle prendra 128 octets, mais tu n'aura qu'a faire if(table[x]) {paire} else {impaire}
3
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
27 janv. 2006 à 23:44
Salut !

Pour calculer la parite :

char mask = 0x01;
char i = 0;
char parite = 0;
while(i < 7)
{
//On compte le nombre de 1
if(Octet & (mask << i))
parite++;
i++;
}
if(parite & 1)
//Impaire
else
//Paire

Pour le checksum, je connai pas l'algo du celui-ci, j'me suis pas renseigner, vu que j'utilise generalement un CRC.
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
28 janv. 2006 à 01:10
ctx_man >> Trop long comme méthode.

vecchio >> Pas bete du tout, et la niveau rapidité, ben on peut pas faire mieux

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
Rejoignez-nous