LOCODUINO

Forum de discussion
Dépôt GIT Locoduino

jeudi 19 janvier 2017

32 visiteurs en ce moment

Systèmes de numération

. Par : Christian Bézanger

Il n’est pas nécessaire de maîtriser ces notions pour commencer à programmer Arduino ; ceci dit, ce n’est pas si compliqué que cela puisque ma sœur, qui a été institutrice, l’a enseigné à des gamins de primaire. Ces notions vous seront utiles pour comprendre des programmes trouvés sur le net ou dans des livres.

Dans l’article Types, constantes et variables, on a vu que les octets sont constitués de 8 bits et peuvent constituer des nombres. Dans les programmes, on peut représenter ces nombres soit en décimal, soit en binaire, soit en hexadécimal, trois systèmes de numération possibles. Voici comment passer de l’un à l’autre, l’exemple étant limité (pour l’instant) à des octets non signés (allant de 0 à 255).

Système décimal

On compte tous en décimal, ce qui signifie qu’il y a dix chiffres (0 à 9) pour constituer un nombre. Prenons le nombre 137 par exemple. Si on le décompose, on a 1 centaine (102), 3 dizaines (101) plus 7 unités (100). On rappelle ici que 101 = 10 et 100 = 1.
Donc, quand on regarde les chiffres qui composent un nombre décimal, de la droite vers la gauche, on a :

  • le nombre d’unités (nombre de fois 10 puissance 0)
  • le nombre de dizaines (nombre de fois 10 puissance 1)
  • le nombre de centaines (nombre de fois 10 puissance 2)
    etc.
    Jusque là, vous le saviez déjà ...

Système binaire

Là, il n’y a que deux chiffres possibles, 0 et 1
Un octet est une combinaison des différentes possibilités avec 8 cases comprenant chacune 0 ou 1.
Par exemple l’octet 11100101 ; c’est un nombre (binaire) composé de chiffres égaux à 0 ou 1.
Si on le regarde de la droite vers la gauche, le nombre se décompose en :

  • 1 fois 2 puissance 0 (tout nombre à la puissance 0 vaut 1)
  • 0 fois 2 puissance 1 (soit 0 X 2 = 0)
  • 1 fois 2 puissance 2 (soit 1 X 4 = 4)
  • 0 fois 2 puissance 3 (soit 0 X 8 = 0)
  • 0 fois 2 puissance 4 (soit 0 X 16 = 0)
  • 1 fois 2 puissance 5 (soit 1 X 32 = 32)
  • 1 fois 2 puissance 6 (soit 1 X 64 = 64)
  • 1 fois 2 puissance 7 (soit 1 X 128 = 128)
    En faisant la somme, notre octet vaut :
    1 + 0 + 4 + 0 + 0 + 32 + 64 + 128 = 229 (en décimal)
    11100101 en binaire vaut 229 en décimal. Retenez le bien ...

Système hexadécimal

Ce système compte avec 16 chiffres, de 0 à 9, puis A, B, C, D, E et F, ce qui fait bien 16 symboles.
Par exemple A en hexadécimal vaut 10 en décimal, B vaut 11, etc.
Prenons le nombre 3FF en hexadécimal. Si on le décompose, on a 3 fois 16², F (c’est-à-dire 15) fois 16 et F (c’est-à-dire 15) unités, soit une somme de 1023.

Le passage du binaire en décimal est très simple. Reprenons notre octet 11100101 et décomposons le en deux fois quatre bits ; nous obtenons 1110 et 0101.
1110 vaut 14 soit E en hexadécimal (on l’a fait plus haut)
0101 vaut 5
En hexadécimal, cet octet vaut E5
Ou encore (E étant égal à 14) : 14 X 16 + 5 = 224 + 5 = 229 (en décimal). Tiens, on retrouve la même chose !

En langage Arduino, cela donne :

  1. a = 229;
  2. b = 0b11100101;
  3. c = 0xE5;

Télécharger

Comme vous l’avez compris, a = b = c.

Pour un humain, avec un peu d’habitude, on passe très vite de quatre bits au chiffre hexadécimal de 0 à F, et E5 est plus digeste que 11100101 !!!

Beaucoup de calculatrices font la transformation hexadécimal en décimal ou binaire et réciproquement (notamment la calculatrice de Windows (ou Mac ou Linux) en affichage programmeur !). Vous pouvez essayer par vous même et vous verrez notre nombre (229) affiché en binaire et en hexadécimal.

Réagissez à « Systèmes de numération »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Programmation »

Comment gérer le temps dans un programme ?

La programmation, qu’est ce que c’est

Types, constantes et variables

Installation de l’IDE arduino

Répéter des instructions : les boucles

Les interruptions (1)

Instructions conditionnelles : le if ... else

Instructions conditionnelles : le switch ... case

Comment gérer l’aléatoire ?

Calculer avec l’Arduino (1)

Calculer avec l’Arduino (2)

Les structures

Systèmes de numération

Les fonctions

Trois façons de déclarer des constantes

Transcription d’un programme simple en programmation objet

Les chaînes de caractères

Trucs, astuces et choses à ne pas faire !

Le monde des objets (1)

Le monde des objets (2)

Le monde des objets (3)

Le monde des objets (4)

Les pointeurs (1)

Les pointeurs (2)

Les Timers (I)

Les Timers (II)

Les Timers (III)

Les Timers (IV)

Les derniers articles

Trucs, astuces et choses à ne pas faire !


Dominique

Le monde des objets (4)


Thierry

Les pointeurs (2)


Thierry

Les chaînes de caractères


Thierry

Transcription d’un programme simple en programmation objet


Dominique, Guillaume, Jean-Luc

Les pointeurs (1)


Thierry

Comment gérer l’aléatoire ?


Dominique, Guillaume, Jean-Luc

Les Timers (IV)


Christian Bézanger

Les fonctions


Jean-Luc

Le monde des objets (3)


Thierry

Les articles les plus lus

Les interruptions (1)

Les Timers (I)

Comment gérer le temps dans un programme ?

Répéter des instructions : les boucles

Calculer avec l’Arduino (1)

Les Timers (II)

Le monde des objets (1)

Installation de l’IDE arduino

Trois façons de déclarer des constantes

Les Timers (III)