Ex: Comme valeur binaire 1010 puis après la valeur de position de bit paire de swap 0101Comment changer la valeur de la position du bit 12 34 56 78?
Répondre
unsigned char swapped = ((original & 85) << 1) | ((original & 170) >> 1);
Vous pouvez utiliser la méthode mentionnée here
J'ai besoin d'échanger des paires de positions de bits comme la paire pour échanger des valeurs de position de 1er et 2ème bit de manière similaire positions de bits 34, 56, 78, ... – Muthuraman
int pairwise_bit_swap(int a) {
return ((a & 0x55555555L) << 1) | ((a & 0xAAAAAAAAL) >> 1);
}
+1. Code très simple utilisant une technique raisonnablement claire. En tant que note de portabilité, il est possible que certains compilateurs utilisent un int avec une portée suffisamment grande pour que ce code provoque la tronque de l'int. – Brian
Attention, le décalage d'un entier signé propagera le bit de signe. Cela signifie que si a est négatif, le premier bit du résultat sera 1, quel que soit le second! Je suppose que vous voulez un entier non signé (c'est-à-dire que vous êtes intéressé par le modèle de bits, pas par la valeur qu'ils représentent dans le complément de 2). Si vous avez vraiment, vraiment besoin d'être un int, vous pouvez simplement le lancer à la volée: ((a & 0x55555555) << 1) | ((((unsigned int) a) & 0xAAAAAAAA) >> 1) ou effacer "manuellement": ((a & 0x55555555) << 1) | (((a & 0xAAAAAAAA) >> 1) & 0x7FFFFFFF) –
Notez également que cela ne fonctionnera que sur un int 32 bits. Le fait que vous mettiez L à la fin n'est d'aucune aide si int est 64 bits! –
Si u veulent échanger des bits de position impaire à la position même (comme des morceaux de paires de swap 1 2, 3 4, 5 6 et 7 8)
un unsigned char, x, y, z ;
a = 2 + 4 + 8 + 128;
x = a & 170;
y = a & 85;
z = (x >> 1) | (y < < 1);
Z est la réponse.
De même, nous pouvons échanger 16 bits et ainsi de suite. S'il vous plaît, élaborez le scénario d'échantillon ci-dessus ...
((x << 1) & 0xAAAAAAAA) |((x >>1) & 0x55555555)
où x dans le nombre.
- 1. '23/02/2011 12:34:56 'n'est pas valide date et heure
- 2. Changer la position du bouton
- 3. changer la position du UIAlertView
- 4. UILabel - comment changer la position du texte
- 5. Comment changer la position du module du chariot magento?
- 6. Comment changer la valeur du champ associé
- 7. Comment changer la position du calendrier dans l'iphone?
- 8. comment changer la position du bouton en perl tk?
- 9. Comment augmenter une double valeur par la puissance de 12?
- 10. Comment changer la position de ScrollView après le toucher?
- 11. Comment changer la valeur de la valeur dans BASH?
- 12. changer la position de l'index sur startDrag()
- 13. Comment changer la position de ToolTip sur un TreeView?
- 14. Comment changer la position de Toast dans Android?
- 15. Comment changer la position de tr avec jquery
- 16. changer la position du haut dans une image centrée
- 17. Modifier la position du bouton
- 18. Comment changer la position du curseur de la souris dans OpenGL/Glut?
- 19. Comment tester si la conversion numérique va changer la valeur?
- 20. Changer la position d'un contrôle programatically
- 21. android - changer dynamiquement la position d'un imageview
- 22. Comment changer la valeur du bouton en utilisant jquery
- 23. Comment changer la position de l'image interne d'un UIImageView?
- 24. chaîne - comment changer la position de signe négatif
- 25. Comment changer la position de l'article dans UIKit
- 26. opération de niveau du bit et la farce octets ensemble
- 27. Comment changer la valeur d'un dynamic_bitset?
- 28. comment peut changer la valeur d'un div
- 29. Comment changer la valeur d'un ButtonField étendu?
- 30. changer la taille de l'étiquette et la position d'exécution tableview
Voulez-vous que le résultat soit 87654321 ou 21436587? –