Il y a un octet à un indice spécifique dans une chaîne d'octets qui représente huit drapeaux; un drapeau par bit dans l'octet. Si un drapeau est défini, son bit correspondant est 1, sinon son 0. Par exemple, si j'ai
0001 0101 # Three flags are set at indexes 0, 2 and 4 # and the others are not set
4 Réponses :
Spécifier les masques de bits (lire à propos de Masques de bits sur Wikipedia ):
if(flags & FLAG_1) { # bit 0 is set, example: 0001 0101 & 0000 0001 = 0000 0001 } if(flags & FLAG_2) { # bit 1 is set, example: 0001 0101 & 000 0010 = 0000 0000 } ...
x & 1, x & 2, x & 4, x & 8, etc p>
Si ceux-ci sont> 0, le bit 1,2,3,4, etc est défini p>
Typiquement, le bit le moins significatif est index de bit 0 et le bit le plus significatif est l'index de bit 7. Utilisation de cette terminologie, nous pouvons déterminer si l'index de bit K est défini en prenant le bitwise-et avec 1 décalé à gauche par k. Si le bit et est non nul, cela signifie que l'indice K a un 1; Sinon, l'index k a un 0. SO:
def get_bit(byteval,idx): return ((byteval&(1<<idx))!=0);
Merci pour la réponse informative, cela a beaucoup de sens. Et vous avez réellement raison, le bit le moins significatif est à l'index 0 dans ce cas.
La fonction serait: