Pensée Informatique

Coder le monde en binaire

Commençons par une petite vidéo expliquant comment de simples 0 et 1 permettent de décrire le monde ! Eh oui, nombre, textes, images, sons, vidéo ! Tout cela avec juste des 0 et des 1 !

Après avoir vu cette vidéo, vous devriez être capable de répondre aux questions suivantes :

  • Convertissez 42 en binaire ? et inversement, convertissez le nombre binaire 10111 en nombre décimal ?
  • Comment coderiez vous en binaire l’image suivante (qui représente un coeur) : coeur
  • Qu’est ce que le codage ASCII ? A quoi sert il ?
  • Comment coder le son et la vidéo ?

Représentation des nombres

Bit ? Octets ? Bytes ? Le bit est l’élément de base en informatique. Il ne peut prendre que deux valeurs qu’on représente souvent avec les chiffres 0 et 1. Un octet est une suite de 8 bits. Ainsi, lorsqu’on parle d’un fichier « qui fait » 10 octets. Cela veut dire que c’est l’information représentée par ce fichier est codée sous la forme de 80 bits. Pour désigner le mot octet, nos amis anglophones disent un byte -qui se prononce /baïte/- et non pas /bit/ comme on le ferait en français. Cela entraîne donc souvent une confusion entre bit et octet alors qu’il y a quand même un facteur 8 ! Ajoutez à cela une tendance à utiliser des anglicismes un peu partout et on arrive parfois à avoir des personnes qui considèrent -à tort!- que bit et octet c’est la même chose.

Conversions

  • 1
  • 1+1=2
  • 2+2=4
  • 4+4=8
  • 8+8=16
  • 16+16=32
  • 32+32=64
  • 64+64=128
  • 128+128=256
  • … Tout enfant s’est amusé un jour à réciter cette suite d’opération 1, 2, 4, 8, 16, 32, 64, 128, 256, où chaque nombre est le double du nombre précédent (en mathématique, on appelle cela la suite des puissances de 2).
cartes de conversion binaires

Pour convertir du binaire en décimal et inversement, il suffit de représenter cette suite des puissances de 2 dans l’ordre décroissant. Si on parle d’un nombre codé sur 5 bits, on prend donc les 5 premiers termes de la suite qu’on écrit ensuite de gauche à droite. Puis, suivant que le bit correspondant est mis à 0 ou 1, on comptabilisera le nombre de points obtenus.

Pour convertir un nombre binaire en nombre écrit en décimal, on sommera les nombres associés aux emplacements dont le bit est à 1. Pour convertir un nombre décimal en binaire, de gauche à droite, on déterminera s’il est possible de retrancher le nombre au nombre de points représenté. Si cela est possible, on écrit 1 et on retranche. Sinon, on écrit 0. On s’occupe ensuite avec le reste au bit suivant (de droite).

Et les nombres à virgules ? et les nombres NÉGATIFS ?

  Un bit (à gauche) est réservé pour coder le signe 0 : positif, 1 : négatif. Ensuite, sur les bits restants, les nombres positifs sont codés normalement, tandis que les nombres négatifs sont codés selon leur complément à deux. Pour les nombres à virgule, on utilise trois éléments :

  • le signe
  • la mantisse
  • l’exposant

Chacun de ces éléments étant codé sur un certain nombre de bits.

Kilo, méga, giga, tera, péta

Dans le système international, le préfixe kilo veut dire 1000 unités. Par exemple pour l’unité « gramme », un kilogramme équivaut à 1000 grammes et un kilomètre veut dire mille mètres. D’autres préfixes, moins utilisés dans la vie courante, ont également été définis :

  • le méga équivaut à 1000 kilos d’unités, soit 1.000.000 (un million) d’unités
  • le giga qui équivaut à 1000 méga d’unités, soit 1.000.000.000 (un milliard) d’unités
  • le téra qui équivaut à 1000 gigas d’unités, soit 1.000.000.000.000 (un billion) d’unités
  • le péta qui équivaut à 1000 téra d’unités, soit 1.000.000.000.000.000 (un billiard) d’unités.

On applique ces préfixes pour désigner des nombres de bits, on parlera par exemple de mégaoctets pour dire un million d’octets. Par exemple, si je dis que mon image fait 3 mégaoctets, cela veut dire qu’elle fait 3 millions d’octets, soit donc 24 millions de bits (n’oublions pas qu’un octet fait 8 bits). Et donc qu’il faut 24 millions de zéros et de uns pour la coder.

Autre exemple, quand vous achetez un disque dur de 3 téraoctets, cela veut dire qu’il a une capacité permettant de coder jusqu’à 3 billions d’octets, soit 24. 000.000.000.000 bits !!!

Attention : Il y a des gens qui diront que 1 kilo-octet ne vaut pas 1000 octets mais 1024 octets car 1000 n’est pas une puissance de 2 (alors que 1024 l’est bien, il s’agit de 2 exposant 10). Or, depuis 1998, tout cela a été normalisé. 1 kilo-octet vaut bien 1000 octets. Pour ceux qui persistent à parler en puissance de 2, on parlera de Kibi octets (Kio) au lieu de Kilo-octets : 1 Kibi-octet vaut 1024 octets. 1 Megi-octets vaut 1024 Kibi-octets, 1 Gibi-octets vaut 1024 Megi-octets…

Représenter les textes à l’aide de bits

Pour coder les caractères, la norme ASCII (American Standard Code for Information Interchange) a été mis au point au début des années 1960. Elle associe les caractères couramment utilisés (lettres, chiffres, ponctuation, quelques caractères de contrôle) à un nombre entre 0 et 127 (soit codé sur 7 bits).

Table ASCII
Table ASCII (source Wikipedia)

ASCII, ISO8859, UTF-8, UTF-32

Dans la table ASCII, les caractères accentués que l’on retrouve en langue française ne sont pas représentés. En effet, le standard a été écrit par les américains, et il n’y a pas de caractère accentué en anglais.

Puisque les caractères ASCII sont codés sur 7 bits, certaines extensions ont utilisées un 8ème bit pour coder les caractères manquants en gardant toujours les 128 premiers caractères ASCII de base.

Avec un 8ème bit supplémentaire, cela fait potentiellement 128 nombres possibles et donc 128 caractères codables en plus. Suivant les langues, de nombreuses normes se sont appuyées sur ce 8ème bits pour coder les caractères manquant par rapport au code ASCII.

La norme ISO8859-15 pour les langues d’Europe de l’ouest, permet ainsi de coder en majuscule et minuscule, les caractères accentués français (é, è, ê, à, î, ô, ù, É, È, Ê, À, Î, Ô, Ù, ï, Ï, …), les cécédilles (ç, Ç), les œ, Œ, Æ, æ, le symbole Euro (€), le eszett (ß), …

Pour pouvoir coder des caractères en dehors des symboles latins étendus, par exemple le chinois, l’arabe, le thailandais, etc., un 8ème bit seul ne suffit plus. L’UNICODE a été défini en codant chaque caractère non pas par 7 bits, mais en utilisant jusqu’à 4 octets (soit 32 bits). Soit 4.294.967.296 caractères possibles. De quoi représenter les caractères de toutes les langues de la Terre, y compris des symboles (mathématiques, notes de musiques, …) et des emojis divers ! Ce codage sur 8, 16 ou 32 bits est retrouvé sous le terme UTF-8, UTF-16, UTF-32. Mais les 128 premiers nombres sont toujours ceux associés à ce bon vieux code ASCII.

Compression

Afin que l’image ne prenne pas trop de place pour économiser l’espace de stockage, mais également pour optimiser les temps de traitement (chargement, sauvegarde), plutôt que de coder les pixels un par un avec pour chacun leur couleur associée, des méthodes de compressions sont utilisées. En voici quelques unes :

  • On a vu que la couleur de chaque pixel pouvait être codé par 256 nuances de rouge, 256 de vert et 256 de bleu. Soit 8 bits par couleur et donc 24 bits en tout par pixel. Le pixel pourrait ainsi utiliser une des 256x256x256=16.777.216 nuances de couleurs possibles ! Or il est rare que une même image utilise simultanément toutes ces nuances de couleurs. Les seules couleurs utilisées seront donc stockées dans une sorte de palette et recevront chacune un numéro (de moins de 24 bits), et c’est ce numéro qui sera utilisé pour coder les couleurs des pixels.

  • L’œil humain ne perçoit pas les nuances des 16.777.216 couleurs. Ici encore des optimisations peuvent être faites en codant sous le même code, deux couleurs très voisines et non perceptible par l’oeil humain.

  • De grandes régions de l’image peuvent utiliser la même et unique couleur (par exemple, un coin de ciel bleu). Plutôt que de coder la même couleur bleu pour chacun des pixels de cette région, on codera simplement que les X pixels suivant seront de la couleur donnée.

Ainsi, selon le type de compression et de méthode de codage employé, mais également de droits (format libre ou propriétaire), on trouvera de nombreux formats d’image : .gif, .jpg, .png, .bmp, … Avec des algorithmes de compression adaptée on peut facilement réduire l’image de 10 à 20 fois sa taille (en terme de bit utilisé pour la coder) sans pour autant perdre en résolution et couleurs visibles à l’œil humain.

Stocker les données

Après avoir vu cette vidéo, vous devriez être capable de répondre aux questions suivantes :

  • Pouvez-vous citer un support de stockage utilisant le magnétisme ?
  • Quel type de stockage utilisent les clefs USB ?

Le stockage des données

Le stockage de données consiste à stocker des suites de 0 et de 1 sous une forme qui pourra permettre de retrouver cette même suite . Pour cela, on utilise des supports matériels qui associeront les bits à :

  •  des trous sur le support (cartes et bandes perforées, mais aussi CD et DVD)
  • des orientations magnétiques (disquettes, cassettes à bandes, disques durs à plateaux)
  • des positions d’électrons dans des semi-conducteurs (flash avec les clef USB, les disques SSD et cartes SD, compactflash et memorystick)

Quelques chiffres...

  • Les vieilles disquettes d’époque ne stockaient qu’entre 512 Kilo-octets et 1,4 mégaoctets
  • 1 CD peut stocker 650 megaoctets
  • 1 DVD entre 4,7 Gigaoctets et 8,5 Gigaoctets
  • En moyenne, les clefs USB usuellement vendues sont de 32 Gigaoctets ou 64 Gigaoctets
  • Les disques durs SSD, malgré leur prix encore élevés, stockent entre 500 Gigaoctets et 2 Teraoctets
  • Un disque dur standard pour une centaine d’euros, stocke entre 1 Teraoctet et 4 Teraoctets.
  • Et un serveur NAS pour les particuliers stockent environ 5 disques de 1 à 2 Teroctets chacun.

Pour rappel : TeraOctet (To), Gigaoctet (Go), Mégaoctet (Mo), Kilooctet (Ko) et :

1 To = 1.000 Go = 1.000.000 Mo = 1.000.000.000 Ko = 1.000.000.000.000 octets = 8.000.000.000.000 bits

Attention : Lorsqu’on choisit un support de stockage, la capacité (nombre de bits qu’il peut enregistrer) ne fait pas tout. Il faut tenir compte également de sa rapidité (temps pour lire une information, temps pour écrire une information), de sa durée de vie (tout support se dégrade au bout d’un certain temps) et surtout de son coût (un disque SSD par exemple, c’est plus rapide, et plus durable qu’un disque dur à plateaux, mais c’est environ 10 fois plus cher !). 

Communiquer

Après avoir vu cette vidéo, vous devriez être capable de répondre aux questions suivantes :

  • Pouvez-vous citer des moyens de transmission de données ?
  • Quel support de communication utilise les signaux lumineux pour transmettre des données ?

Les données sont partout. Nous avons de l’information qui est présente dans notre quotidien sous n’importe quelle forme (texte, image, son…). Cette information nous pouvons la partager, l’échanger, bref, la communiquer. Dans cette communication, nous pouvons être à la fois émetteurs et récepteurs. Pour communiquer (émetteur) une information vers un récepteur (qui peut être près ou loin), il est nécessaire d’utiliser un support qui devra avoir le même protocole. Ces protocoles sont ceux que nous connaissons sous les noms des réseaux.

Les types de réseaux

On distingue plusieurs types de réseaux avec des tailles de couverture plus ou moins grandes : à l’échelle d’une personne, d’une petite pièce, d’une maison ou d’un bâtiment, d’une ville ou même du monde entier. Les différentes types de réseaux  sont classifiés selon leur capacité à relier des machines, la vitesse à laquelle ils peuvent transférer les données et leur étendue. 

Dans le cas d’un réseau privé (réseau appartenant à une même organisation), on parlera respectivement de réseau PAN, TAN, LAN, MAN, WAN.

À proximité de la personne : le Réseau PAN (Personal Area Network).

Dans les PAN interconnecte des appareils dans un environnement proche (quelques centimètres à quelques mètres) d’une personne. Par exemple, un utilisateur et sa tablette, son clavier sans-fil, ses enceintes, son smartphone, son imprimante, scanner et son ordinateur. On trouvera dans cette catégorie des connexions de type USB, Bluetooth, Zigbee, Infrarouge (IrDA), Firewire, HomeRF, UWB, …

Comme exemple de réseau PAN, prenons cette famille très « connectée ». Chaque membre de la famille est au centre d’un réseau PAN différent :

  • La mère a son ordinateur connecté par bluetooth avec son clavier et sa souris sans fil. Son ordinateur se connecte par USB a son scanner et son assistant personnel est relie par infrarouge à son PC.
  • Le père quand a lui travaille sur son ordinateur fixe qui est relié à son imprimante et son disque externe par USB.
  • Le fils quand à lui a un ordinateur portable et communique avec son drone par wifi.
  • La fille a un réseau PAN uniquement constitué de son smartphone.
  • La grand-mère a son ordinateur portable communiquant avec ses enceintes connectées par bluetooth.
  • Et enfin le grand-père n’a qu’une tablette.

Dans un même bâtiment ou sur un même site : les réseaux TAN et LAN

Le réseau TAN (Tiny Area Network) permet de relier quelques machines distants de quelques mètres. Dans le cadre d’une utilisation en famille à la maison, on le retrouve parfois sous le nom de “réseau domestique”.

Le réseau LAN (Local Area Network) permet de relier quelques machines (situées dans un même site) à un même réseau qui se trouve à une distance de quelques dizaines de mètres.

Cela concerne un petit réseau dans un environnement familial ou une petite ou moyenne entreprise. Par exemple, les membres de la famille qui possèdent chacun un ordinateur fixe et/ou portables, une tablette, un smartphone (dans leurs propres PAN) et quelques machines en réseaux accessibles à toute la famille comme un serveur NAS (un serveur de disque accessible à tous les membres de la famille) et une imprimante réseau (également accessible à tous les membres de la famille). . Que ce soit les réseaux TAN ou LAN, on les trouve souvent dénommé sous le nom de réseau local et parfois, abusivement, sous le terme d’intranet.

Dans les réseaux TAN ou LAN, des réseaux reliant quelques machines sur une distance de quelques mètres (pour les TAN) ou de quelques dizaines de mètres (pour les LAN), on pourra trouver des protocoles de communication comme du réseau ethernet sur cuivre ou sur fibre optique du Wifi.

Les réseaux MAN (Metropolitan Area Network) à l’échelle d’une ville et qui relie plusieurs LAN.

Dans un MAN on se place à l’échelle d’une ville (plusieurs kilomètres). Des LAN dans différents bâtiments sont reliés entre eux souvent par fibre optique, par câble téléphonique ou câble éthernet en cuivre.

Les réseaux mondiaux : les réseaux WAN (Wide Area Network)

Enfin dans un WAN, on se place à l’échelle du monde (des milliers de kilomètres). Les communications se font essentiellement par fibre optique (y compris les fibres optiques sous-marines reliant les continents) ou par satellite.

Sur d’aussi grandes distances, la fibre optique offre un meilleur débit mais toutes les zones ne sont pas couvertes par la fibre. Au point d’arrivée de la fibre, d’autres supports de communication (câble de cuivre, ondes radio, …) doivent prendre le relai pour amener le réseau  au plus proche des habitations et des personnes. La liaison par satellite présente un avantage majeur : elle ne connait quasiment pas de zone blanche. Il est en effet inutile passer de des câbles sur des kilomètres, que ce soit par voie aérienne (lignes avec poteaux) ou par voie souterraine (canalisations). Elle a cependant un inconvénient : les satellites géostationnaires étant à 35000 km de la surface du globe, le temps de latence est plus important : le débit est bien moins bon. Pour en savoir plus, faites une requête sur votre moteur de recherche “liaison internet satellite latence visio”. Vous pouvez aussi consulter directement wikipédia (https://fr.wikipedia.org/wiki/Internet_par_satellite).

Question d'Internaute...

“Le fichier vidéo que je tente d’envoyer fait 1 Giga, j’ai souscrit un abonnement à 1 Gigabit/seconde. Logiquement j’aurai dû pouvoir le transférer en 1 seconde. Pourtant, j’ai mis plusieurs minutes à l’envoyer. C’est un scandale !!!”

                                     Signé : un internaute énervé

Réponse

Cher internaute, il y a plusieurs éléments qui expliquent cela :

  • tout d’abord, pour les fichiers, on parle en général en octets alors que les débits s’expriment usuellement en bit par seconde. Rappelez-vous : un octet, c’est 8 bits. Donc un gigabit par seconde, ça veut dire 125 megaoctets par seconde ! Donc, votre fichier d’un gigaoctet devra au moins mettre 8 secondes à être envoyé.
  • lorsqu’on souscrit à un abonnement ADSL, le débit montant est très différent du débit descendant. Le débit montant, c’est le débit pour envoyer des données depuis chez soi vers l’Internet, le débit descendant c’est le contraire. Le débit descendant est beaucoup plus haut que le débit montant. En moyenne pour les offres standards pour les particuliers, c’est 1 Gbits/s en débit descendant (c’est à dire pour recevoir des données) et 200 Mb/s en débit montant (c’est à dire pour envoyer des données). Pour des raisons de publicité, les fournisseurs insistent évidemment plutôt sur le débit le plus fort, c’est à dire le débit descendant. Or dans le cas étudié, où l’on envoie des données, il aurait fallu considérer le débit montant  (soit 200 Mbits/s soit donc 25 Mégaoctets par secondes).
  • vous n’êtes pas seul sur le réseau ! Entre vous et l’Internet, à travers l’Internet et entre l’Internet et  le destinataire, beaucoup d’autres personnes se partagent la bande passante (c’est à dire le volume potentiel de données pouvant être transporté entre deux points du réseau).  Donc, entre vous et la destination de votre fichier, les données de votre fichier font constamment la queue entre les différents “nœuds” de l’Internet. Sans compter qu’à la maison, d’autres personnes partagent également votre connexion Internet : pensez à votre conjoint en train de télécharger également des fichiers ou vos enfants en train de regarder une vidéo sur YouTube.
  • ce n’est pas tout d’avoir un bon débit entre vous et l’Internet, mais qu’en est-il chez vous ? Le réseau c’est comme une histoire de robinet, il suffit d’avoir un goulot d’étranglement quelque part, et le débit est moins bon dans l’ensemble. Alors, le réseau entre votre machine et votre box internet : ◦ il y a du câblage ? est-il de bonne qualité ? suivant la norme de votre câblage,les débits sont plus ou moins bons. ◦ du wifi ? suivant la norme, vous pouvez avoir entre un débit théorique d’une dizaine de Mbit/s à quelques centaines de Mbit/s.  Mais ce débit décroît très rapidement suivant votre distance par rapport à la borne et des obstacles (murs, appareils, …) entre la borne et vous.
  • de votre machine elle-même : votre programme est souvent lancée avec des tas d’autres programmes qui tournent et qui sollicitent en même temps votre processeur, votre disque dur et votre connexion réseau. Et donc, comme votre ordinateur ne peut pas tout faire à la fois (même s’il en donne l’impression), il partagera toutes ces ressources (processeur, disque et connexion réseau) entre tous ces programmes. Alors, si vous êtes en train de regarder une vidéo en streaming, tout en téléchargeant des fichiers, tout en ayant votre lecteur de mail ouvert, Facebook et Instagram dans un onglet et que vous êtes en train de tchatter sur Messenger, c’est normal que votre envoi de fichier prenne du temps !
  • enfin, les données de votre fichier ne sont pas envoyées telles quelles sur l’Internet. Vos données sont fragmentées en une multitude de petits paquets qui sont envoyés un à un sur l’Internet. Chaque petit paquet comporte des données additionnelles qu’on appelle en-tête (adresse IP du destinataire, informations de contenu, etc.), sans compter que sur l’Internet, les paquets peuvent se perdre, se désynchroniser, etc. tous les processus permettant de les réordonner et les amener intacts au final, entraînent beaucoup de temps de latence et de surcharge. Bref, lorsque vous voulez envoyer 1 Gigaoctet de données, vous  envoyez une centaine de mégaoctets supplémentaires (suivant la combinaison de protocoles sous-jacents, cela représente une dizaine de pourcents en plus des données utiles).

Traiter les données

Après avoir vu cette vidéo, vous devriez être capable de répondre aux questions suivantes :

  • Pouvez-vous donner au moins 5 exemples de traitement de données ?

Capteurs et actionneurs

Un capteur est un dispositif électronique qui mesure ou reçoit des données du monde physique pour le transmettre ensuite à un système informatisé. Par exemple, un capteur de luminosité mesurera la quantité de lumière reçu, un capteur de son percevra le son pour en transmettre les valeurs. Un interrupteur est également un capteur (il indique si le bouton a été appuyé ou pas). Une caméra est également un capteur : elle récupère les images du monde réel.

Pour schématiser, un capteur transforme un élément du monde réel en des données numérique.

A l’inverse, un actionneur est un dispositif électronique qui transforme une donnée numérique (un ordre) en action sur le monde réel. Par exemple, une LED qui s’allumera lorsqu’il recevra des données lui ordonnant de l’allumer, un bras robotique qui bougera, un son qui se déclenchera, un message qui s’affichera sur un écran, …

Qu’est ce que programmer ?

Après avoir vu cette vidéo, vous devriez être capable de répondre aux questions suivantes :

  • qu’est ce qu’un algorithme ?
  • pourquoi ne peut on pas lancer un programme écrit en langage C avec un interpréteur Python ?

Références

  • Computer Science Unplugged : https://csunplugged.org/en/

Mis à jour :