Published on

Bit de parité d'une trame UART

 2 mins
Authors
  • avatar
    Name
    Léo Delpon
    Twitter

Cette fonction calcule le bit de parité d'une donnée sur un unsigned int d'une taille de 32 bits. Pour être plus précis, elle permet de déterminer le bit de parité pairs.

En programmation, l'opérateur & est un opérateur de "ET" qui compare les bits de deux nombres. Dans le cas présent, il est utilisé pour vérifier si le dernier bit du nombre count est un 1 ou un 0. Si le dernier bit est un 1, le résultat de count & 1 sera un 1, sinon il sera un 0.

Ensuite, l'opérateur ^ est un opérateur de "OU exclusif" bitwise qui compare les bits de deux nombres et retourne un 1 si les bits sont différents et un 0 s'ils sont identiques. Dans la phrase présentée, il est utilisé pour retourner une valeur binaire alternant entre 0 et 1 à chaque appel de la fonction, en fonction du dernier bit du nombre count.

En résumé, cette expression est souvent utilisée pour implémenter des fonctionnalités basées sur des alternances binaires.

Code Blocks

Voici le code :

unint8_t parity_bit(uint32_t data) {
    unint8_t count = 0;
    for(int i = 0; i < sizeof(data)*8; ++i)
        count += (data >> i) & 1;
    return (count & 1) ^ 1;
}

Merci à Kilian Jugie de m'avoir aidé à comprendre de façon précise le concept du bitwise operator