Aller au contenu

Pouvez-vous compter sur le binaire ?

Bon d’accord, nous avons maintenant une bonne idée de comment il est possible de coder une image ou un son dans un langage aussi basique que le binaire. Mais est-ce aussi le cas pour les nombres ?

Pas de jaloux, avec suffisamment de 0 et de 1, on doit bien pouvoir coder tous les nombres que nous souhaitons. Mais ces nombres codés en 0 et 1, peut-on vraiment les utiliser pour… calculer ? Compter, multiplier, additionner ?

Eh bien oui, et heureusement ! Sinon il faut avouer que le langage binaire ne serait pas très efficace… Et que les super-calculateurs porteraient bien mal leur nom.

Image

"Il y a 10 sortes de gens ceux qui comprennent le binaire et les autres" : vous trouvez que cette phrase n'a pas de sens ? Allez donc lire la suite et dans 5 minutes, vous aussi vous comprendrez cette blague !

Le binaire, ça compte !

Pour apprendre à compter en binaire, rien de plus simple. Fermez les yeux, souvenez-vous de vos années à l’école primaire et c’est parti. Bon rouvrez les yeux sinon vous allez louper la vidéo.

Et maintenant, j’imagine que vous comprenez la blague de l’intro du chapitre ? Eh oui, 10 ça ne veut pas toujours dire "dix". En binaire c’est l’équivalent de notre "deux" décimal... Si vous mourrez d’envie de partager votre tout nouvel "humour de geek" avec le monde entier, sachez que la version anglaise de cette blague se vend même en T-shirts.

les nombres en binaire

Pour bien prendre en main les nombres en binaire, voire même en faire une activité débranchée avec les enfants, allez donc faire un tour sur Pixees pour compter les points. Et pour plus de détails sur les calculs binaires, il y a justement un petit cours d'OpenClassrooms dessus.

Aussi simple que de compter sur ses doigts

Le codage binaire des nombres est franchement efficace : toutes les combinaisons possibles de 0 et de 1 sont utilisées, chacune pour un nombre différent. En décimal c’est pareil d’ailleurs (toutes les combinaisons de chiffres représentent bien un nombre différent). Peut-on en dire autant du comptage sur les doigts ?

dactylonomie

Vous voulez encore une occasion de briller en société ? Si oui allez en apprendre un peu plus sur la dactylonomie.

Il y a donc, rien que sur les doigts, plein de façons différentes de représenter le même nombre. Du coup il faut bien faire la différence entre une quantité, par exemple le nombre de crayons posés sur une table, et la façon dont on la représente, dont on la dit, dont on la code.

Image

La quantité 4 et quelques façons de la représenter

Il existe de nombreuses façons de coder une information. Vous pouvez même en inventer de nouvelles façons tous les jours (ou en faire une activité avec les enfants) ! Pour cela vous devrez choisir d’utiliser un langage particulier (le langage binaire est un bon exemple, mais rien ne vous empêche de créer votre propre langage à partir de symboles de votre choix), et un système de codage (les règles à appliquer pour coder et décoder l’information). Il n’existe pas un langage ou un système absolument meilleur que les autres ! Cela dépend des objectifs que l’on souhaite atteindre, et ils peuvent être variés : transmettre une image, calculer, être compréhensible par un Français, par un Chinois… ou par une machine.

Nous le savons, les ordinateurs, eux, fonctionnent en langage binaire. Ils ont été construits comme cela. Cela signifie qu’au niveau le plus bas, TOUT, absolument tout, est écrit et stocké avec des 0 et des 1. Coder avec des 0 et des 1, ce n’est pas si compliqué au fond, nous venons d’apprendre à le faire nous-mêmes, mais il faut avouer que ce n’est pas très pratique pour nous, les humains, de parler en langage binaire. Heureusement, les ordinateurs et les machines disposent aujourd’hui d’interfaces et de programmes qui savent traduire le langage binaire en des langages plus compréhensibles pour nous…

Grace Hopper

Rappelez-vous on a déjà abordé cette idée dans le premier module de Class’Code ! Grâce aux travaux de Grace Hopper, même les programmeurs professionnels n’ont plus besoin de coder tous leurs programmes en langage binaire : ils peuvent utiliser des langages de programmation plus proches du langage humain. Ouf !

À ne plus y retrouver ses 0 et ses 1

C'est bien sympa (enfin, sympa si on est un peu geek dans l'âme), on sait maintenant compter et coder en binaire, les nombres, les lettres, la musique, les images… bref tout.

Mais du coup l'ordinateur, il fait comment pour savoir ce qu'il y a dans sa mémoire ?

Disons qu’il voit par exemple 01011010. Nous avons vu que si c'est un nombre binaire, alors ça fait 90, et si c'est une lettre codée en ASCII, alors c'est un Z. En regardant seulement les 8 chiffres binaires ci-dessus, l’ordinateur n’a aucune chance de savoir ce que c’est. C’est pour cela que quand on stocke quelque chose dans son ordinateur, il faut lui dire ce que c'est (c’est à dire la nature de ce que l’on stocke), pour qu'il sache de quelle façon décoder le binaire en une chose un peu plus lisible pour nous. Cela permet aussi à l’ordinateur de décider combien de place il va falloir pour ranger la variable (on peut imaginer qu’un nombre de 60 chiffres ou un texte a besoin de plus de place qu’un booléen). Un peu comme on ne doit pas oublier l’extension du fichier lorsqu’on l’enregistre (.xls ou .odt par exemple) car si on la supprime ou la modifie, il est fort à parier que notre ordinateur sera désemparé et ne saura plus comment ouvrir notre fichier. Pour chaque variable de chaque programme, c’est pareil, l’ordinateur va stocker, en plus de sa valeur, ce qu’on appelle le « type » de la variable, comme par exemple si c’est un nombre entier, un nombre avec virgule, une valeur booléenne (VRAI ou FAUX) ou un texte.

Georges Boole

Booléen ? Valeur booléenne ? De quoi parle-t-on ? Rappelez-vous de notre nouvel ami Georges Boole ! Ce nom vient directement de lui. Un booléen, en logique et en programmation informatique, est un type de variable qui ne peut prendre que deux valeurs. Les variables de ce type sont ainsi soit à l'état VRAI soit à l'état FAUX.

Dans Scratch, c’est au maximum caché. Scratch va tout faire pour ne pas que vous voyiez le type des variables que vous manipulez, et que plus ou moins quoi que vous fassiez, tout se passe bien, c’est à dire que les variables prennent bien le type que vous vouliez. Quand vous créez une variable, il vous demande d’indiquer un nom, mais pas le type de la variable. Alors que dans la plupart des langages de programmation, c’est une information que vous devrez indiquer pour éviter tout risque d’erreur !

Si vraiment on veut voir que les variables ont bien un type dans Scratch, on peut quand même le coincer avec le programme suivant :

Image

Additionner du texte et des nombres, c’est possible ?

Essayez ! Si vous cliquez sur le drapeau vert, votre lutin va dire : 12. En fait pour lui l’addition se fait sur des nombres, pas des textes, et pour ne pas produire d’erreur, il va juste "oublier" Bonjour qui ne peut pas s’additionner. Cela montre bien qu’il sait que 12 est un nombre et Bonjour n’en est pas un. Pourtant, dans la mémoire de votre ordinateur, les deux sont codés avec des 0 et des 1.

En résumé

Il existe plusieurs façons de coder une même information (et on peut même en inventer de nouvelles), le codage est une convention.

Le binaire permet efficacement de coder des nombres et de calculer avec (exactement comme en décimal).

Une même suite de bits peut coder différentes choses : une lettre ou un nombre par exemple.

Du coup, quand on crée une variable, il faut en général dire à l’ordinateur quel type d’objet elle contient, pour qu’il sache comment interpréter l’information qu’il va stocker, et la place qu’il va réserver en mémoire.