Modifier les bits dans un entier en Python
Donc, j'ai un nombre entier avec une valeur de 7. (0b00000111) Et je voudrais la remplacer par une fonction à 13. (0b00001101) Alors quel est le meilleur algorithme pour remplacer les octets dans un nombre entier? Par exemple:
set_bits(somevalue, 3, 1) # What makes the 3rd bit to 1 in somevalue?
source d'informationauteur Váradi Norbert
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin d':
Noter que peu de chiffres (
index
) sont à partir de 0, avec 0 est le bit le moins significatif.Également de noter que la nouvelle valeur est retournéil n'y a pas moyen de modifier un entier "en place" comme vous les montrer (au moins je ne le pense pas).
Ces travaux pour les entiers de taille quelconque, même de plus de 32 bits:
Si vous aimez les choses à court, vous pouvez simplement utiliser:
Vous pouvez utiliser bit à bit de manœuvres.
http://wiki.python.org/moin/BitwiseOperators
si vous souhaitez définir un bit à 1, vous pouvez utiliser bit-à-bit " ou " avec 1 sur la position donnée:
0b00000111 | 0b00001000 = 0b00001111
pour définir un bit à 0, vous pouvez utiliser bit-à-bit "et"
0b00001111 & 0b11111011 = 0b00001011
Noter que le préfixe 0b est pour les nombres binaires et 0x est pour hexadécimal.