En base 2, chaque position correspond à une puissance de 2. La position la plus à droite correspond à 2⁰.
| Puissance | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Valeur | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Bit | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
| Contribution | 128 | 64 | 0 | 16 | 0 | 4 | 2 | 0 |
On multiplie chaque bit par la puissance de 2 correspondant à sa position :
(11010110)₂
= 1 × 2⁷ + 1 × 2⁶ + 0 × 2⁵ + 1 × 2⁴ + 0 × 2³ + 1 × 2² + 1 × 2¹ + 0 × 2⁰
= 128 + 64 + 16 + 4 + 2
= 214.
Réponse : (11010110)₂ = (214)₁₀.
On effectue des divisions euclidiennes successives par 2, jusqu'à obtenir un quotient nul.
| Nombre à diviser | Quotient | Reste |
| --- | --- | --- |
| 173 | 86 | 1 |
| 86 | 43 | 0 |
| 43 | 21 | 1 |
| 21 | 10 | 1 |
| 10 | 5 | 0 |
| 5 | 2 | 1 |
| 2 | 1 | 0 |
| 1 | 0 | 1 |
Les bits se lisent dans la colonne des restes du bas vers le haut. On obtient 10101101.
Réponse : (173)₁₀ = (10101101)₂.
Un chiffre hexadécimal correspond à un groupe de quatre bits, car 16 = 2⁴.
On forme les groupes en partant de la droite. Ici, il y a déjà douze bits : on obtient trois groupes complets.
1011 | 0110 | 1101
| Groupe de quatre bits | Valeur décimale | Chiffre hexadécimal |
| --- | --- | --- |
| 1011 | 8 + 2 + 1 = 11 | B |
| 0110 | 4 + 2 = 6 | 6 |
| 1101 | 8 + 4 + 1 = 13 | D |
En hexadécimal, les valeurs de 10 à 15 s'écrivent respectivement A, B, C, D, E et F.
Réponse : (101101101101)₂ = (B6D)₁₆.
En base 16, les positions, de droite à gauche, correspondent à 16⁰, 16¹, 16², etc. Le chiffre F représente la valeur 15.
(2F4)₁₆
= 2 × 16² + 15 × 16¹ + 4 × 16⁰
= 2 × 256 + 15 × 16 + 4 × 1
= 512 + 240 + 4
= 756.
Réponse : (2F4)₁₆ = (756)₁₀.
Chaque bit peut prendre deux valeurs : 0 ou 1. Avec sept bits, il y a donc :
2⁷ = 128 valeurs différentes.
Pour des entiers naturels, le plus petit code est 0000000, qui représente 0. Le plus grand est 1111111, qui représente :
2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰ = 2⁷ − 1 = 127.
Réponse : on peut coder 128 valeurs, soit les entiers de 0 à 127 inclus.
La borne maximale vaut 127, car 0 fait partie des 128 valeurs.
En complément à deux sur n bits, les valeurs représentables vont de −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1.
Sur huit bits, cela donne :
−2⁷ = −128 et 2⁷ − 1 = 127.
Réponse : les entiers de −128 à 127 inclus.
Pour coder un entier négatif, on écrit d'abord la valeur positive sur huit bits, puis on inverse tous les bits et on ajoute 1.
Étape 1 : écrire 18 sur huit bits.
18 = 16 + 2 = 2⁴ + 2¹, donc 18 s'écrit 00010010.
Étape 2 : inverser les huit bits.
Chaque 0 devient 1 et chaque 1 devient 0. On obtient 11101101.
Étape 3 : ajouter 1.
11101101 + 00000001 = 11101110.
Réponse : −18 est représenté par 11101110.
Le bit le plus à gauche vaut 1 : l'entier représenté est négatif.
retrouver la valeur positive opposée.
On inverse les bits : 11110010 devient 00001101.
On ajoute 1 : 00001101 + 00000001 = 00001110.
Or 00001110 représente 8 + 4 + 2 = 14. L'entier d'origine étant négatif, il vaut −14.
Réponse : 11110010 représente −14.
from tutor import tutor
somme = 0
compteur = 0
for n in range(1, 8):
if n % 3 == 0:
somme = somme + n * n
compteur = compteur + 1
print(somme, compteur)
tutor()Les valeurs de somme et de compteur indiquées dans le tableau sont celles obtenues après chaque passage dans la boucle.
| n | n % 3 | n % 3 == 0 | Calcul effectué | somme | compteur |
| --- | --- | --- | --- | --- | --- |
| 1 | 1 | Faux | Aucune modification | 0 | 0 |
| 2 | 2 | Faux | Aucune modification | 0 | 0 |
| 3 | 0 | Vrai | 0 + 3 × 3 = 9 | 9 | 1 |
| 4 | 1 | Faux | Aucune modification | 9 | 1 |
| 5 | 2 | Faux | Aucune modification | 9 | 1 |
| 6 | 0 | Vrai | 9 + 6 × 6 = 45 | 45 | 2 |
| 7 | 1 | Faux | Aucune modification | 45 | 2 |
Pour n = 3, on ajoute 3² = 9 et on augmente compteur de 1. Pour n = 6, on ajoute 6² = 36 et on augmente encore compteur de 1.
Quand le test est faux, les variables conservent leur valeur : elles ne sont pas remises à zéro.
À la fin de la boucle :
somme vaut 3² + 6² = 9 + 36 = 45 ;
compteur vaut 2, car deux valeurs ont satisfait le test.
print(somme, compteur) affiche les deux valeurs sur une même ligne, séparées par un espace :
45 2
L'opérateur % donne le reste de la division euclidienne. Ainsi, n % 3 est le reste de la division de n par 3.
La fonction tarif(age) doit renvoyer le prix correspondant à l'âge.
| Âge | Tarif |
| --- | --- |
| Moins de 12 ans | 4 € |
| De 12 à 17 ans inclus | 6 € |
| 18 ans ou plus | 10 € |
def tarif(age):
if age < 12:
return 4
elif age < 18:
return 6
else:
return 10
age = int(input("Saisir un âge entier : "))
print("Tarif :", tarif(age), "€")somme = 0
compteur = 0
nombre = int(input("Saisir un entier positif (0 pour arrêter) : "))
while nombre != 0:
if nombre % 4 == 0:
somme = somme + nombre
compteur = compteur + 1
nombre = int(input("Saisir un entier positif (0 pour arrêter) : "))
print("Somme :", somme)
print("Nombre d'entiers divisibles par 4 :", compteur)