P2E-DIE

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Dé binaire

Nous sommes tous habitué à utiliser la base 10. Ainsi, la lecteur d'une valeur numérique quelconque n'est généralement pas un problème... et encore moins pour un dé offrant une valeur entre 1 et 6.

Malheureusement, le Pico-2-Explorer ne dispose pas de LEDs organisées sous la forme de dé ou afficheur numérique. Par contre la carte dispose de 3 LEDs qui peuvent être utilisée pour afficher des 1 (allumée) et des 0 (éteinte).

 

Il est possible d'utiliser les LEDs du Pico-2-explorer pour représenter une valeur numérique à l'aide d'un encodage binaire.

Nous pourrons ainsi produire une valeur numérique de 1 à 6 (celles d'un dé) qu'il sera possible de lire sur les 3 LEDs du Pico-2-Explorer.

La connaissance des premières représentations binaire peut s'avérer très utile dans les mondes de l'informatique et de l'électronique.

A propos de l'encodage binaire

Plutôt que d'aborder l'encodage binaire de front, je vais procéder par une approche détournée suivit d'une petite correction.

Une approche imparfaite

Admettons que l'on fixe une valeur prédéterminée à nos trois LEDs. Soit les valeurs 1, 2, 3 (en commençant la numérotation par la gauche).

 

Il est donc possible d'indiquer les valeurs suivantes en allumant la LED appropriée. On peu indiquer quelle LED est allumée à l'aide d'une suite de 1 et de 0. Par exemple 001 indique que seule la LED la plus a droite est allumée tandis que 110 indique que les deux LEDs les plus a gauches sont allumées.

Chacun de ces 1/0 sont des équivalents de marche/arret ou vrai/faux ou True/False. Chacune des positions, appelée bit, n'a que deux valeurs possibles.

  • 000 = Aucune LED = 0
  • 001 = LED verte = 1
  • 010 = LED orange = 2
  • 100 = LED rouge = 3

En allant un peu plus loin et en sommant les valeurs correspondantes, il est même possible d'atteindre la valeur 6.

Ainsi:

  • 101 = LED rouge + LED verte = 3 + 1 = 4
  • 110 = LED rouge + LED orange = 3 + 2 = 5
  • 111 = LED rouge + LED orange + LED verte = 3 + 2 + 1 = 6
Avec cette approche, nous pouvons déjà déterminer de cette petite démonstration que:
  1. Le bit le plus à droite à le poids le plus faible (une valeur de 1).
  2. Le bit le plus a gauche à le poids le plus fort (une valeur de 3).

Nous pouvons aussi donner des noms aux différents bits:

  1. Le bit de poids le plus faible (le plus à droite) porte le nom de bit 0 (ou b0),
  2. Le bit suivant, directement à gauche, porte le nom b1,
  3. le bit suivant, totalement a gauche dans notre exemple, porte le nom b2.

Le lecteur attentif aura noté qu'il y a deux façons de représenter la valeur 3 dans ce système.

  • 100 = LED rouge = 3
  • 011 = LED Orange + LED verte = 2+1 = 3

Cet encodage est équivoque! Il sera d'autant plus gênant et fréquent qu'il y a de bits pour codifier la valeur numérique.

Le codage binaire

Plutôt que d'utiliser une série numérique croissante (1,2,3), la codification binaire se propose d' utiliser la suite (1,2,4,8,16,32,64,128,...).

Cette suite de valeur est obtenue a partie de 2^0=1, 2^1=2, 2^2=4, 2^3=8 et ainsi de suite.

Ces nouveaux poids pour chacun des bits est visible sur l'image ci-dessous.

 

Peut-être l'aurez vous remarqué mais un nombre binaire se lit en commençant par le poids le plus faible.
La lecture se fait de droite à gauche.

Cette fois, l'encodage évitera la redondance d'encodage pour la valeur 3 et permettra d'encoder une valeur allant jusque 7.

Valeur binaire LEDs correspondantes Valeur numérique
000 toutes LEDs éteintes 0
001 LED rouge = 1 1
010 LED orange = 2 2
011 LED orange + LED rouge = 2 + 1 3
100 LED verte = 4 4
101 LED verte + LED rouge = 4 + 1 5
110 LED Verte + LED orange = 4 + 2 6
111 LED Verte + LED orange + LED rouge = 4 + 2 + 1 7

A bit équivalent, l'encodage binaire permet d'encoder une gamme plus large de valeurs numériques.

Ainsi, sur 4 bits il est possible d'encoder 16 valeurs (0 à 15) en binaire là où l'encodage simple est limité à 11 valeurs (0 à 10).

Sur 5 bits, l'encodage binaire monte à 32 valeurs encodées là où l'encodage simple est limité à 16 valeurs.

Et sous Python?

Jusqu'à maintenant, la notation binaire était assez spartiate avec seulement des 1 et des 0.

Cependant, dans un langage de programmation il est important d'indiquer si nous sommes face à une valeur binaire ou une valeur numérique.

Par défaut, Python considère un nombre comme étant encodé en base 10.

Pour signaler un nombre binaire, celui-ci est précédé du préfixe "0b" (ex: 0b110).

En saisissant l'instruction si dessous, il est possible de connaître la valeur correspondante d'un nombre binaire

print( 0b110 )

Ce qui affichera la valeur 6 dans la session REPL comme le démontre la capture Thonny IDE ci-dessous.

 

Il est également possible de transformer une valeur numérique en sa représentation binaire à l'aide de la fonction bin()

print( bin(3) ) 
print( bin(6) )

Comme le montre la capture d'écran ci-dessous, bin() n'utilise que le nombre de bit nécessaire pour encoder la valeur numérique. C'est ainsi que seul 2 bits sont nécessaire pour l'encodage binaire de 3 là ou il faut 3 bits pour encoder la valeur 6.

 


A titre d'information, sur 8 bits, il est possible d'encoder les valeurs de 0 à 255.

Brancher

Su


Code

Le script die.py est disponible dans le dépôt dédié au Pico-2-Explorer.

1 xxx

La


Traduction augmentée réalisée par Meurisse. D pour shop.MCHobby.be - Licence CC-BY-SA.


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.