Representation des Entiers
Comment l'ordinateur stocke-t-il le nombre 42 ? En binaire, avec des 0 et des 1 ! Mais comment representer les nombres negatifs ? C'est la que le complement a deux entre en jeu. Comprendre ces representations est ESSENTIEL pour eviter les bugs lies aux depassements de capacite !
55 min Niveau 3/5 +40 XP
Objectifs
- Convertir entre binaire, decimal et hexadecimal
- Comprendre la representation des entiers non signes
- Maitriser le complement a deux pour les entiers signes
- Calculer les limites de representation (overflow)
Pieges a eviter
- !Oublier que le bit de poids fort indique le signe
- !Confondre nombre de bits et nombre de valeurs
- !Erreur dans le complement a deux (oublier +1)
- !Ne pas anticiper les depassements de capacite
Cours complet
En binaire, chaque chiffre (bit) ne peut valoir que 0 ou 1. La valeur depend de la position : puissances de 2 au lieu de puissances de 10.
# Decimal vers Binaire
# 42 en decimal = 32 + 8 + 2 = 2^5 + 2^3 + 2^1
# 42 = 101010 en binaire
# En Python : bin() donne la representation binaire
print(bin(42)) # '0b101010'
print(bin(255)) # '0b11111111'
print(bin(1)) # '0b1'
print(bin(0)) # '0b0'
# Binaire vers Decimal : int() avec base 2
print(int('101010', 2)) # 42
print(int('11111111', 2)) # 255
# Calculer a la main :
# 101010 = 1x32 + 0x16 + 1x8 + 0x4 + 1x2 + 0x1
# = 32 + 8 + 2 = 42
# Position et poids de chaque bit (de droite a gauche)
# Position : 5 4 3 2 1 0
# Poids : 32 16 8 4 2 1 (puissances de 2)
# Bits : 1 0 1 0 1 0
# Ecrire en binaire en Python
n = 0b101010 # Prefixe 0b pour le binaire
print(n) # 42
# Afficher avec zeros de remplissage
print(f"{42:08b}") # '00101010' (8 bits)Quiz Entiers
5 questions pour valider
Conversions Python
bin(42) → '0b101010'
hex(255) → '0xff'
int('101', 2) → 5
int('ff', 16) → 255
Limites 8 bits
- • Non signe : 0 a 255
- • Signe : -128 a 127
- • Overflow : attention !
