5330 shaares
5 private links
5 private links
Petite astuce en python pour faire un «not». Le symbole '~' inverse les bits d'un nombre ... sur 32bits signé !
Or on peut vouloir le faire sur un mot plus petit et surtout non signé. Pour cela il suffit de masquer le nombre avec des '1' de la longueur que l'on veut. Par exemple je veux inverser 0x01 sur 8bits :
In [26]: "{:08b}".format(0x01)
Out[26]: '00000001'
Si je fait simplement '~' je n’obtiens pas le résultat voulu :
In [27]: "{:08b}".format(~0x01)
Out[27]: '-0000010'
Si je masque avec 0xff (8 bits à '1') :
In [28]: "{:08b}".format(~0x01&0xff)
Out[28]: '11111110'
Ça marche.