Disons que j'ai deux entiers avec les représentations binaires suivantes:Comment copier les X derniers bits?
01101010
00110101
Et maintenant, je veux copier les 3 derniers bits du premier entier sur le second afin qu'il devienne
00110010
Quelle est la meilleure façon de faire cela? (En fait, mon objectif est de déplacer tous les bits X + 1 vers la droite, en supprimant essentiellement le Xe bit, et en gardant les bits X-1 identiques - dans ce cas, X est 4)
Le "pourquoi?":
vous avez un tas de drapeaux,
1 = 'permission x'
2 = 'permission y'
4 = 'permission z'
8 = 'permission w'
vous décidez que que "l'autorisation y" n'est plus nécessaire que vous r, et déplace ainsi z et w vers le haut (en les faisant respectivement 2 et 4). Cependant, maintenant vous devez mettre à jour toutes les valeurs dans votre base de données .... (quelle formule utilisez-vous?)
Plus généralement, 'mask = (1 << (x-1)) - 1' Je pense? – mpen
@Mark: Bon appel, j'ai été confus par le '3' vs '4' vs 'X + 1', mais je pense que vous avez raison. – Stephen
Bien "4" est le bit à "supprimer". Ce qui signifie que nous devons garder les bons «3» bits identiques. – mpen