Quelle méthode utiliseriez-vous pour déterminer si le bit qui représente 2^x est un 1 ou un 0 ?
Par curiosité : pourquoi avez-vous préféré le décalage à gauche de 1 au décalage à droite de la valeur ?
Quelle méthode utiliseriez-vous pour déterminer si le bit qui représente 2^x est un 1 ou un 0 ?
Par curiosité : pourquoi avez-vous préféré le décalage à gauche de 1 au décalage à droite de la valeur ?
Ce n'est pas une très bonne solution si ce code doit être appelé souvent. Vous remplacez une alternative d'une ligne par une alternative d'une ligne, et les décalages de bits ne sont vraiment pas si difficiles.
Longueur de la ligne != lisibilité de la ligne, wds. Vous avez peut-être raison de dire que la solution précédente est plus efficace, mais la différence est probablement marginale, surtout si testBit() est inlined.
Vous pouvez également utiliser
bool isSet = ((value>>x) & 1) != 0;
EDIT : la différence entre " (value>>x) & 1
" et " value & (1<<x)
" repose sur le comportement lorsque x est supérieur à la taille du type de "valeur" (32 dans votre cas).
Dans ce cas particulier, avec " (value>>x) & 1
", vous aurez le signe de la valeur, alors que vous obtenez un 0 avec " value & (1<<x)
"(il est parfois utile d'obtenir le signe du bit si x est trop grand).
Si vous préférez avoir un 0 dans ce cas, vous pouvez utiliser l'option " >>>
"au lieu de l'opérateur " >>
"
Alors, " ((value>>>x) & 1) != 0
" et " (value & (1<<x)) != 0
"sont complètement équivalents
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.