Représentation des entiers
Bases 10, 2 et 16, conversions, bits et octets, nombre de valeurs codables sur n bits, addition binaire, entiers relatifs en complément à deux et dépassement de capacité.
1. Bases de numération
Définition
En base $b$, un nombre s'écrit avec des chiffres de $0$ à $b - 1$, chaque position correspondant à une puissance de $b$. En binaire (base 2) on n'utilise que $0$ et $1$ : ce sont les bits. Un octet est un groupe de $8$ bits. En hexadécimal (base 16) on utilise $0$–$9$ puis $A$–$F$ ($A = 10$, …, $F = 15$).
Méthode · Convertir
Binaire ? décimal : additionner les poids des bits à $1$. Décimal ? binaire : divisions successives par $2$, puis lire les restes de bas en haut ($13 = 1101_2$). Binaire ? hexadécimal : regrouper les bits par $4$ ($1011\,0101_2 = \text{B}5_{16}$).
Propriété · Combien de valeurs ?
Avec $n$ bits, on code $2^n$ valeurs : les entiers naturels de $0$ à $2^n - 1$. Un octet code $256$ valeurs ($0$ à $255$).
2. Addition binaire
Exemple · Poser une addition
$0 + 0 = 0$ ; $0 + 1 = 1$ ; $1 + 1 = 10_2$ (on pose $0$, retenue $1$). Exemple : $0110_2 + 0111_2 = 1101_2$ ($6 + 7 = 13$).
3. Entiers relatifs : complément à deux
Définition
Sur $n$ bits, on code les entiers de $-2^{n-1}$ à $2^{n-1} - 1$. Un positif s'écrit comme d'habitude ; pour un négatif $-x$, on inverse tous les bits de $x$ puis on ajoute $1$. Le bit de poids fort vaut $1$ pour les négatifs.
Exemple · ?5 sur 8 bits
$5 = 0000\,0101$ ; inversion : $1111\,1010$ ; $+1$ : $1111\,1011$. Vérification : $1111\,1011 + 0000\,0101 = 1\,0000\,0000$, le $9^\text{e}$ bit est perdu : on obtient bien $0$.
Attention · Dépassement de capacité
Sur $8$ bits signés, $127 + 1$ donne $-128$ : le résultat sort de l'intervalle représentable. En Python, les entiers n'ont pas de taille limite, mais dans de nombreux langages et dans le matériel, ils en ont.
Activité · Conversions en Python
bin(181), hex(181), int("10110101", 2) et int("B5", 16).'0b10110101', '0xb5', 181, 181.0b indique le binaire, 0x l'hexadécimal.S'entraîner
Exercices corrigés
🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.
Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.
Binaire vers décimal
★☆☆Convertir $1101_2$ et $10010_2$ en décimal.
Décimal vers binaire
★☆☆Convertir $25$ en binaire par divisions successives.
Octet maximal
★☆☆Quel est le plus grand entier naturel codable sur un octet ? sur $16$ bits ?
Nombre de bits nécessaires
★★☆Combien de bits faut-il au minimum pour coder les entiers de $0$ à $1\,000$ ?
Hexadécimal vers décimal
★☆☆Convertir $2\text{F}_{16}$ en décimal.
Binaire vers hexadécimal
★★☆Convertir $1110\,0110_2$ en hexadécimal.
Couleur RGB
★★☆Une couleur web s'écrit #FF8000. Donner les valeurs décimales du rouge, du vert et du bleu.
Addition binaire
★☆☆Calculer $1011_2 + 0110_2$. Vérifier en décimal.
Multiplier par 2
★★☆Que se passe-t-il quand on ajoute un $0$ à droite d'un nombre binaire ?
Complément à deux
★★☆Coder $-12$ sur $8$ bits en complément à deux.
Décoder un négatif
★★☆Quel entier relatif représente $1111\,1110$ sur $8$ bits ?
Intervalle signé
★☆☆Quel intervalle d'entiers peut-on coder sur $8$ bits en complément à deux ? sur $16$ bits ?
Dépassement
★★☆Sur $8$ bits signés, que donne $100 + 50$ ? Pourquoi ?
Python bin
★☆☆Que renvoie bin(10) ?
Python int
★☆☆Que renvoie int("1111", 2) ? et int("ff", 16) ?
Fonction de conversion
★★★Écrire une fonction binaire(n) qui renvoie l'écriture binaire (chaîne) d'un entier $n \geq 1$ par divisions successives.
Fonction inverse
★★★Écrire une fonction decimal(s) qui convertit une chaîne binaire en entier sans utiliser int(s, 2).
Pair ou impair
★☆☆Comment savoir si un nombre écrit en binaire est pair ?
Ordres de grandeur
★★☆Combien d'octets dans $1$ kio ? dans $1$ ko ?
Vrai ou faux
★★☆a) $1\,0000_2 = 16$. b) Sur $4$ bits on code $16$ valeurs. c) En complément à deux, le bit de poids fort d'un négatif vaut $0$.
Vérifier
Avez-vous bien compris ?
Répondez au quiz : la correction s'affiche immédiatement.