Différences entre les versions de « Numération »

De Wiki sur la programmation
Aller à la navigation Aller à la recherche
(Comment les ordinateurs gèrent les nombres)
 
Ligne 1 : Ligne 1 :
== Les système de numération ==
Les système de numération


=== Le binaire ===
== Le binaire ==
Le processeur en lui-même ne gère que des bits. On dit qu'il utilise le système binaire.  
Le processeur en lui-même ne gère que des bits. On dit qu'il utilise le système binaire.  
On résume souvent au zéro (0) et au un (1) pour distinguer les deux états. Ceci est bien pratique pour réaliser des calculs.
On résume souvent au zéro (0) et au un (1) pour distinguer les deux états. Ceci est bien pratique pour réaliser des calculs.
Ligne 17 : Ligne 17 :
D'autres opérateurs existent mais en réalité ils peuvent être construit à partir des 3 précédents: XOU ou OU exclusif, NAND ou NOT AND, IMP ou implication.
D'autres opérateurs existent mais en réalité ils peuvent être construit à partir des 3 précédents: XOU ou OU exclusif, NAND ou NOT AND, IMP ou implication.


==== Le ET logique ====
=== Le ET logique ===
La sortie du ET est vraie si et seulement si les 2 entrées sont vraies.
La sortie du ET est vraie si et seulement si les 2 entrées sont vraies.


Il est souvent noté par le point.
Il est souvent noté par le point.


==== Le OU logique ====
=== Le OU logique ===
La sortie du OU est vraie si et seulement si l'une des 2 entrées au moins est vraie.
La sortie du OU est vraie si et seulement si l'une des 2 entrées au moins est vraie.


Il est souvent noté par le signe plus (+).
Il est souvent noté par le signe plus (+).


==== Le NON logique =====
=== Le NON logique ===
La sortie du NON est toujours l'opposé de l'entrée.
La sortie du NON est toujours l'opposé de l'entrée.


Il est représenté par une barre horizontale au-dessus de l'expression.
Il est représenté par une barre horizontale au-dessus de l'expression.


=== Les entiers ===
== Les entiers ==
Une succession de 0 et de 1 c'est bien joli, mais ce n'est pas trop parlant pour un humain qui à l'habitude de manipuler les nombres en base décimale.
Une succession de 0 et de 1 c'est bien joli, mais ce n'est pas trop parlant pour un humain qui à l'habitude de manipuler les nombres en base décimale.


Pour stocker des nombre entiers nous utilisons des regroupements de bits:
Pour stocker des nombre entiers nous utilisons des regroupements de bits:
- le tercet: permet de représenter des chiffres de 0 à 7 en base octale (base 8).
* le tercet: permet de représenter des chiffres de 0 à 7 en base octale (base 8).
- le quartet: permet de représenté un chiffre hexadécimal de 0 à F (0 à 15 en décimal).
* le quartet: permet de représenté un chiffre hexadécimal de 0 à F (0 à 15 en décimal).
- le septet: représente des nombres de 0 à 127.
* le septet: représente des nombres de 0 à 127.
- l'octet: représente des nombres de 0 à 255. C'est souvent une unité de base utilisée avec des multiples. Il est exactement écrit avec deux chiffres hexadécimaux.
* l'octet: représente des nombres de 0 à 255. C'est souvent une unité de base utilisée avec des multiples. Il est exactement écrit avec deux chiffres hexadécimaux.


Les entiers de taille plus grandes sont représenté dans des suites d'octets:
Les entiers de taille plus grandes sont représenté dans des suites d'octets:
- l'entier court (short, shortint, int16): 2 octets. De 0 à 65535.
* l'entier court (short, shortint, int16): 2 octets. De 0 à 65535.
- l'entier: (int, integer, int32): 4 octets. De 0 à 2^32-1.
* l'entier: (int, integer, int32): 4 octets. De 0 à 2^32-1.
- l'entier long (long, int64): 8 octets. De 0 à 2^64-1.
* l'entier long (long, int64): 8 octets. De 0 à 2^64-1.
- l'entier long long, ou entier géant (bigint, int128): 16 octets. De 0 à 2^128-1.
* l'entier long long, ou entier géant (bigint, int128): 16 octets. De 0 à 2^128-1.


Selon les processeurs les bits sont disposés en mémoire en partant du bit le plus significatif ou bien du moins significatif. Nous parlerons ainsi de MSB pour "most significant bit" et LSB pour "less significant bit".
Selon les processeurs les bits sont disposés en mémoire en partant du bit le plus significatif ou bien du moins significatif. Nous parlerons ainsi de MSB pour "most significant bit" et LSB pour "less significant bit".
Ligne 51 : Ligne 51 :
Le mot: il est possible que vous rencontrerez ce terme dans de la documentation informatique. Il s'agit ici du mot machine. Il s'agit du nombre le plus grand qu'un processeur soit capable de manipuler à chaque instruction élémentaire. Ainsi un processeur de 32 bits est capable de manipuler des nombres entiers de 32 bits.
Le mot: il est possible que vous rencontrerez ce terme dans de la documentation informatique. Il s'agit ici du mot machine. Il s'agit du nombre le plus grand qu'un processeur soit capable de manipuler à chaque instruction élémentaire. Ainsi un processeur de 32 bits est capable de manipuler des nombres entiers de 32 bits.


=== Les entiers négatifs ===
== Les entiers négatifs ==
Jusqu'ici nous n'avons parlé que des entiers positifs. Or les unités arithmétiques des processeurs sont capables de manipuler des entiers négatifs. Comment fait-on pour les représenter ?
Jusqu'ici nous n'avons parlé que des entiers positifs. Or les unités arithmétiques des processeurs sont capables de manipuler des entiers négatifs. Comment fait-on pour les représenter ?
Et bien nous utilisons le bit le plus significatif pour indiquer qu'un nombre est négatif (1) ou positif (0).
Et bien nous utilisons le bit le plus significatif pour indiquer qu'un nombre est négatif (1) ou positif (0).
Ligne 57 : Ligne 57 :
Mais comment fait-on pour différencier les entiers avec ou sans signes ? Dans l'absolu on ne sait pas faire la différence. Seul les programmes savent comment convertir ces nombres pour l'afficher correctement.
Mais comment fait-on pour différencier les entiers avec ou sans signes ? Dans l'absolu on ne sait pas faire la différence. Seul les programmes savent comment convertir ces nombres pour l'afficher correctement.


=== L'hexadécimal ===
== L'hexadécimal ==
On peut parler aussi de la base 16. Les chiffres sont : 0 à 9, puis a, b, c, d, e et f. Les lettres peuvent être en minuscule ou en majuscule. Cela n'a pas d'importance.
On peut parler aussi de la base 16. Les chiffres sont : 0 à 9, puis a, b, c, d, e et f. Les lettres peuvent être en minuscule ou en majuscule. Cela n'a pas d'importance.
Cette base est très souvent employée. Elle a l'avantage d'être compacte, explicite et fixe. Un octet sera toujours représenté par 2 chiffres hexa.
Cette base est très souvent employée. Elle a l'avantage d'être compacte, explicite et fixe. Un octet sera toujours représenté par 2 chiffres hexa.
Ligne 63 : Ligne 63 :
Pour convertir de l'hexa vers le décimal: pour chaque chiffre on multiplie le nombre en décimal par une puissance de 16 en fonction de sa position.
Pour convertir de l'hexa vers le décimal: pour chaque chiffre on multiplie le nombre en décimal par une puissance de 16 en fonction de sa position.
Exemples (le plus significatif est à gauche):
Exemples (le plus significatif est à gauche):
- 8a: 10 + 16 * 8 = 138
* 8a: 10 + 16 * 8 = 138
- af: 15 + 16 * 10 = 175
* af: 15 + 16 * 10 = 175
- 3fea: 10 + 14 * 16 + 15 * 16 * 16 + 3 * 16 * 16 * 16 = 16362
* 3fea: 10 + 14 * 16 + 15 * 16 * 16 + 3 * 16 * 16 * 16 = 16362

Version du 31 août 2022 à 17:01

Les système de numération

Le binaire

Le processeur en lui-même ne gère que des bits. On dit qu'il utilise le système binaire. On résume souvent au zéro (0) et au un (1) pour distinguer les deux états. Ceci est bien pratique pour réaliser des calculs. Toutefois on parlerait plutôt d'état actif et d'état repos. On associe le 1 à l'état actif et le 0 à l'état repos.

Par exemple :

  • La porte serait ouverte ou fermée
  • La lumière serait allumée ou éteinte
  • Le niveau de l'eau serait haut ou bas
  • etc.

Une algèbre existe pour manipuler et combiner ces valeurs. Il s'agit de l'algèbre de Boole.

A là base il existe trois opérateurs: le ET, le OU et le NON. D'autres opérateurs existent mais en réalité ils peuvent être construit à partir des 3 précédents: XOU ou OU exclusif, NAND ou NOT AND, IMP ou implication.

Le ET logique

La sortie du ET est vraie si et seulement si les 2 entrées sont vraies.

Il est souvent noté par le point.

Le OU logique

La sortie du OU est vraie si et seulement si l'une des 2 entrées au moins est vraie.

Il est souvent noté par le signe plus (+).

Le NON logique

La sortie du NON est toujours l'opposé de l'entrée.

Il est représenté par une barre horizontale au-dessus de l'expression.

Les entiers

Une succession de 0 et de 1 c'est bien joli, mais ce n'est pas trop parlant pour un humain qui à l'habitude de manipuler les nombres en base décimale.

Pour stocker des nombre entiers nous utilisons des regroupements de bits:

  • le tercet: permet de représenter des chiffres de 0 à 7 en base octale (base 8).
  • le quartet: permet de représenté un chiffre hexadécimal de 0 à F (0 à 15 en décimal).
  • le septet: représente des nombres de 0 à 127.
  • l'octet: représente des nombres de 0 à 255. C'est souvent une unité de base utilisée avec des multiples. Il est exactement écrit avec deux chiffres hexadécimaux.

Les entiers de taille plus grandes sont représenté dans des suites d'octets:

  • l'entier court (short, shortint, int16): 2 octets. De 0 à 65535.
  • l'entier: (int, integer, int32): 4 octets. De 0 à 2^32-1.
  • l'entier long (long, int64): 8 octets. De 0 à 2^64-1.
  • l'entier long long, ou entier géant (bigint, int128): 16 octets. De 0 à 2^128-1.

Selon les processeurs les bits sont disposés en mémoire en partant du bit le plus significatif ou bien du moins significatif. Nous parlerons ainsi de MSB pour "most significant bit" et LSB pour "less significant bit".

Le mot: il est possible que vous rencontrerez ce terme dans de la documentation informatique. Il s'agit ici du mot machine. Il s'agit du nombre le plus grand qu'un processeur soit capable de manipuler à chaque instruction élémentaire. Ainsi un processeur de 32 bits est capable de manipuler des nombres entiers de 32 bits.

Les entiers négatifs

Jusqu'ici nous n'avons parlé que des entiers positifs. Or les unités arithmétiques des processeurs sont capables de manipuler des entiers négatifs. Comment fait-on pour les représenter ? Et bien nous utilisons le bit le plus significatif pour indiquer qu'un nombre est négatif (1) ou positif (0).

Mais comment fait-on pour différencier les entiers avec ou sans signes ? Dans l'absolu on ne sait pas faire la différence. Seul les programmes savent comment convertir ces nombres pour l'afficher correctement.

L'hexadécimal

On peut parler aussi de la base 16. Les chiffres sont : 0 à 9, puis a, b, c, d, e et f. Les lettres peuvent être en minuscule ou en majuscule. Cela n'a pas d'importance. Cette base est très souvent employée. Elle a l'avantage d'être compacte, explicite et fixe. Un octet sera toujours représenté par 2 chiffres hexa.

Pour convertir de l'hexa vers le décimal: pour chaque chiffre on multiplie le nombre en décimal par une puissance de 16 en fonction de sa position. Exemples (le plus significatif est à gauche):

  • 8a: 10 + 16 * 8 = 138
  • af: 15 + 16 * 10 = 175
  • 3fea: 10 + 14 * 16 + 15 * 16 * 16 + 3 * 16 * 16 * 16 = 16362