26 sept. 20241 min de lecture
Cheat sheet — Bits, octets, hexadécimal & manipulation binaire
Représentation des nombres (binaire, hexa, décimal), bits de poids fort/faible (MSB/LSB), masque 0xFF, complément binaire et manipulation d'octets en Python : conversions, parcours, inversion de bits.
intro#binaire#hexadecimal#python#cheatsheet#bas-niveau
Mis à jour le 21 sept. 2026
Bases de numération
| Hexa | Binaire | Décimal |
|---|---|---|
| 0–9 | 0000–1001 | 0–9 |
| A | 1010 | 10 |
| B | 1011 | 11 |
| C | 1100 | 12 |
| D | 1101 | 13 |
| E | 1110 | 14 |
| F | 1111 | 15 |
Conversions
- Hexa → binaire : chaque chiffre hexa = 4 bits.
0x3F → 0011 1111. - Binaire → hexa : regrouper par 4 depuis la droite.
11011011 → 0xDB. - Hexa → décimal :
0x2F = (2 × 16) + 15 = 47. - Décimal → hexa : divisions successives par 16.
47 → 0x2F.
Poids fort (MSB) et poids faible (LSB)
- MSB (Most Significant Bit) : bit le plus à gauche, plus grande valeur.
- LSB (Least Significant Bit) : bit le plus à droite, plus petite valeur.
Dans 1010 : le MSB vaut 2³ = 8, le LSB vaut 2⁰ = 1. (Le LSB est aussi le
bit où l’on cache un message en stéganographie LSB.)
Manipulation d’octets en Python
# Hexadécimal → octet
hex_val = 0x3F
byte_val = hex_val.to_bytes(1, 'big') # b'?'
# Parcourir des octets
data = b'\x3F\x7A\xAC'
for byte in data:
print(hex(byte)) # 0x3f, 0x7a, 0xac
# Inverser les bits d'un octet (complément)
inverted = bytes((~byte) & 0xFF for byte in data) # b'\xc0\x85\x53'
(~byte) & 0xFF : ~byte inverse tous les bits (NOT), & 0xFF garde les 8
bits de poids faible — le masque 0xFF isole un octet.
Complément binaire
Inverser tous les bits d’un octet. Opération symétrique (l’appliquer deux fois restaure l’original), déterministe donc peu sûre seule.
| Caractère | ASCII | Binaire | Complément |
|---|---|---|---|
| A | 65 | 01000001 |
10111110 |
| B | 66 | 01000010 |
10111101 |
def complement(text):
return "".join(chr((~ord(c)) & 0xFF) for c in text)