LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mercredi 24 avril 2024

Visiteurs connectés : 54

Systèmes de numération

.
Par : Christian

DIFFICULTÉ :

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 :

a = 229;
b = 0b11100101;
c = 0xE5;

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 »

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 Timers (V)

Bien utiliser l’IDE d’Arduino (1)

Bien utiliser l’IDE d’Arduino (2)

Piloter son Arduino avec son navigateur web et Node.js (1)

Piloter son Arduino avec son navigateur web et Node.js (2)

Piloter son Arduino avec son navigateur web et Node.js (3)

Piloter son Arduino avec son navigateur web et Node.js (4)

Démarrer en Processing (1)

L’assembleur (9)

Comment gérer le temps dans un programme ?

L’assembleur (8)

Processing pour nos trains

L’assembleur (7)

L’assembleur (6)

Arduino : toute première fois !

TCOs en Processing (1)

L’assembleur (5)

L’assembleur (4)

L’assembleur (3)

L’assembleur (2)

L’assembleur (1)

TCOs en Processing (2)

Calculer avec l’Arduino (1)

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 concevoir rationnellement votre système

Comment gérer l’aléatoire ?

Trucs, astuces et choses à ne pas faire !

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

Ces tableaux qui peuvent nous simplifier le développement Arduino

Les chaînes de caractères

Les derniers articles

L’assembleur (9)


Christian

L’assembleur (8)


Christian

L’assembleur (7)


Christian

L’assembleur (6)


Christian

L’assembleur (5)


Christian

L’assembleur (4)


Christian

L’assembleur (3)


Christian

L’assembleur (2)


Christian

L’assembleur (1)


Christian

TCOs en Processing (2)


Pierre59

Les articles les plus lus

Les Timers (I)

Les interruptions (1)

Instructions conditionnelles : le if ... else

Ces tableaux qui peuvent nous simplifier le développement Arduino

Les chaînes de caractères

Comment gérer le temps dans un programme ?

Piloter son Arduino avec son navigateur web et Node.js (1)

Bien utiliser l’IDE d’Arduino (1)

Calculer avec l’Arduino (2)

Calculer avec l’Arduino (1)