Tester un bit dans une variable

Bonjour,
comment faire pour tester un bit d'une variable (le 8eme bit)
est ce que ces deux lignes font la meme choses ?

uint8_t a;
if (a & 0x80)
ou
 if(a & (1 << 0x80))

ce code (1 << 0x80) veut dire de positionner le 8eme bit a un ou faire un decalage 128 fois ?

si les bits sont indexer a 0, ceci est valable pour tester le 8eme bit
if (a & (1 << 7)) ? ou if(a & (1 << 8)) ?

Merci.

if (bitRead (variable,8))

oui je sais mais sans passer par une macro

[edit]
donc c'est bien if (a & (1 << 8))

#define bitcheck(byte,nbit) ((byte) & (1 << (nbit)))

Merci.

Bonjour,

Non.
La numérotation des bits commence à 0, le 8eme bit est le bit numéro 7.
C'est donc
if (a & (1 << 7))

Merci.

je revient sur ce post, j'ai vu dans certain code ceci:

value >>= 2;

ca signifie quoi ?

déjà c'est un décalage à droite mais le = veut dire quoi ?

après recherche va voudrait dire cela

value = value >> 2

De façon générale
valeur opérateur= donnée
est équivalent à
valeur = valeur opérateur donnée
C'est bon pour la plupart des opérateurs à deux opérandes.

Ca VEUT dire ça

merci pour la confirmation, j'ai vu rarement avec le signe >>, mais en effet c'est standard C la plus part du temps.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.