comment retourner un peu à une position spécifique dans un entier dans n'importe quelle langue
J'ai un entier n
, et j'ai envie de retourner son k
- ième bit (de la plus faible) dans sa représentation binaire. Comment puis-je le faire?
Par exemple, si j'ai n=0b01101
et k=2
, alors le résultat est 0b01001=9
Toute langue est fine. Merci.
ouais, en quelque sorte, j'étais penser
~
et s'est coincéOriginalL'auteur | 2013-08-15
Vous devez vous connecter pour publier un commentaire.
À renverser le cours d'un ou de plusieurs bits, utilisez binaire XOR. Dans votre cas, le masque XOR est
1
décalék
bits vers la gauche.En Python:
L'expression:
est valide en C, Java, Python et quelques autres langues (à condition que les variables sont bien définis).
OriginalL'auteur NPE
Gauche-déplacer le numéro 1 le nombre de chiffres que vous avez besoin, et ensuite XOR le nombre.
JavaScript:
Ce qui se passe:
OriginalL'auteur Constablebrew
En c tu viens de le faire pour l'activer:
mais il y a d'autres façons de le faire, comme:
Cela décale les bits de k à 1
Maintenant, si vous voulez retourner le peu que vous pouvez faire une déclaration avec un unaire et de voir comment vous avez besoin de la retourner
pow(2,k)
, vous pouvez utiliser(n >> k) & 1
pour trouver la valeur à la position k lors de la n est un entier. Résultant en une RSHIFT au lieu d'un appel de fonction, la même chose peut être dit de la puissance de l'opérateur**
, bien que la performance sage, c'est de peu d'intérêt.OriginalL'auteur Ion
Voici comment vous pouvez le faire en C:
OriginalL'auteur Kevin