Compter en binaire
Un ordinateur ne connaît que deux états : le courant passe, ou il ne passe pas. Il écrit donc tout avec deux chiffres seulement, 0 et 1. C'est le binaire.
Notre façon de compter
Nous comptons en base 10, avec dix chiffres. Dans 345, chaque chiffre a un poids dix fois plus grand que son voisin de droite :
345 = 3 × 100 + 4 × 10 + 5 × 1
En base 2, c'est pareil, mais chaque position vaut deux fois plus que la précédente : 1, 2, 4, 8, 16, 32...
1101 en binaire = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 13
Question : Que vaut le nombre binaire 101 ? — 5. 1 × 4 + 0 × 2 + 1 × 1 = 5.
Du binaire vers le décimal
On lit les chiffres de gauche à droite. À chaque chiffre, on double ce qu'on a déjà, puis on ajoute le chiffre :
fonction enDecimal(binaire)
resultat est un nombre vaut 0
pour i de 1 à longueur(binaire)
resultat vaut resultat * 2 + convertir_nombre(copier(binaire, i, 1))
fin pour
retourne resultat
fin fonction
affiche enDecimal('1101') // 13
affiche enDecimal('11111111') // 255
Pour 1101 : on part de 0, puis 0 × 2 + 1 = 1, puis 1 × 2 + 1 = 3, puis 3 × 2 + 0 = 6, puis 6 × 2 + 1 = 13.
Du décimal vers le binaire
La méthode : diviser par 2 encore et encore, en notant le reste à chaque fois. Les restes, lus du dernier au premier, donnent l'écriture binaire.
Pour 13 :
- 13 = 2 × 6 + 1
- 6 = 2 × 3 + 0
- 3 = 2 × 1 + 1
- 1 = 2 × 0 + 1
En remontant : 1101.
fonction enBinaire(entier)
si entier = 0 alors
retourne '0'
fin si
restant est un nombre vaut entier
bits est un texte vaut ''
tant que restant > 0
bits vaut convertir_texte(restant mod 2) + bits
restant vaut arrondi_inferieur(restant / 2)
fin tant que
retourne bits
fin fonction
pour i de 0 à 8
affiche i + ' s’écrit ' + enBinaire(i)
fin pour
Chaque nouveau reste est collé devant les précédents (... + bits) : c'est ce qui les remet dans le bon ordre. arrondi_inferieur donne le quotient entier de la division par 2.
CoddyRun sait aussi le faire tout seul : vers_decimal('1101', 2) renvoie 13. Mais tu connais maintenant l'algorithme qui se cache derrière !
Combien de valeurs avec n bits ?
Un chiffre binaire s'appelle un bit. Avec 1 bit, on écrit 2 valeurs (0 et 1) ; avec 2 bits, 4 valeurs ; avec 3 bits, 8... Chaque bit de plus double le nombre de possibilités :
pour bits de 1 à 10
affiche bits + ' bits : ' + puissance(2, bits) + ' valeurs'
fin pour
Avec 8 bits, un octet, on écrit 256 valeurs, de 0 à 255. C'est exactement pour cela que les composantes d'une couleur vont de 0 à 255 dans rgb(255, 120, 0) !
En résumé
- Le binaire est la base 2 : chaque position vaut le double de la précédente.
- Binaire vers décimal : doubler, puis ajouter le chiffre suivant.
- Décimal vers binaire : diviser par 2 et lire les restes à l'envers.
- Avec
n bits, on écrit 2 puissance n valeurs ; un octet en compte 256.