Python permet de manipuler des entiers en décimal (base 10), binaire (base 2), octal (base 8) ou hexadécimal (base 16).
Pour exprimer un entier en base 2, (resp. 8, resp. 16), on le fait précéder de 0b (resp. 0o, resp. 0x).
Par exemple : 0xD5B, 0o6533, et 0b110101011011 représentent tous les trois la valeur 3419.
Voici les trois opérations binaires (“ou” inclusif, “ou” exclusif, “et”) spécifiques au type int.
Les résultats sont renvoyés au format décimal, et on peut les convertir au format binaire, octal ou hexadécimal (mais sous forme de chaîne de caractères cette fois) avec les fonctions bin, oct et hex. On réalise pourquoi l’opérateur ^ ne peut pas être utilisé pour désigner l’exponentiation ! Si veut calculer {a^n}, on écrira donc a**n ou pow(a,n).
| Fonction | Signification | Exemples |
x | y |
ou logique (or) | bin(0b11001 | 0b01101) renvoie ’0b11101’0b11001 | 0b01101 renvoie 29hex(0x19 | 0xd) renvoie ’0x1d’0x19 | 0xd renvoie 29 ; 25 | 13 renvoie 29 |
x ˆ y |
ou exclusif (xor) | bin(0b11001 ^ 0b01101) renvoie ’0b10100’0b11001 ^ 0b01101 renvoie 20hex(0x19 ^ 0xd) renvoie ’0x14’0x19 ^ 0xd renvoie 20 ; 25 ^ 13 renvoie 20 |
x & y |
et logique (and) | bin(0b11001 & 0b01101) renvoie ’0b1001’0b11001 & 0b01101 renvoie 9hex(0x19 & 0xd) renvoie ’0x9’0x19 & 0xd renvoie 9 ; 25 & 13 renvoie 9 |
Voici les deux opérations de décalage de bits (multiplication ou division par des puissances de 2).
| Fonction | Signification | Exemples |
x << n |
décalage à gauche de n bits multiplication de x par {2^n} |
13 << 5 renvoie 416 ; bin(13 << 5) renvoie ’0b110100000’0b1101 << 5 renvoie 416 ; bin(0b1101 << 5) renvoie ’0b110100000’ |
x >> n |
décalage à droite de n bits division entière de x par {2^n} |
417 >> 5 renvoie 13 ; bin(417 >> 5) renvoie ’0b1101’0b110100001 >> 5 renvoie 13 ; bin(0b110100001 >> 5) renvoie ’0b1101’ |
∼ x |
complément à 2 x → −x − 1 → x |
bin(∼0b111000) renvoie ’-0b111001’bin(∼0b100000) renvoie ’-0b100001’ |