Numération 3 - Représentation de l'information 3.3 - Numération et représentation des nombres - Système de numération * base 10; base 2; base 16. * représentation hexadécimale des nombres binaires. - Représentations codées binaires : binaire pur, BCD, GRAY, ASCII. De tout temps, l'homme a cherché à compter avec plus ou moins de réussite. Dès la préhistoire, on retrouve sur des os des entailles pouvant avoir servi à compter des animaux ou des objets. S'il est relativement simple de compter avec des traits jusqu'à 5, il devient plus difficile de compter au-delà. Imaginez le nombre 100 représenté avec des entailles, l'erreur est assurée... Les romains ont mis en place un système de numération basé sur des symboles littéraux. Cette numération très utile à cette époque présente de nos jours l'inconvénient majeur de ne pas pouvoir autoriser les opérations de base (addition, soustraction) ce qui est gênant. Essayez d'ajouter de tête MCDIV + CCLXXI. Problème n'est-ce pas ? La réponse est : MDCLXXV (1675). C'est vers l'an 750 en Inde, que les indiens ont mis en place la numération que nous utilisons aujourd'hui avec tous ses chiffres. Les Indiens les ont ensuite transmis aux Arabes qui les ont transmis aux Européens vers l'an 1200. Et ce n'est qu'environ trois siècles plus tard que les chiffres se généraliseront, un peu. C'est pour cette raison que l'on parle de chiffres arabes. Si les Arabes ne sont pas à l'origine des chiffres, ils sont par contre à l'origine des mathématiques. C'est l'astronome et mathématicien Al Khuwârizmî qui établira les fondements des règles du calcul algébrique. La numération fait appel à deux principes fondamentaux que l'on retrouvera dans toutes les bases de calcul. Le premier principe fondamental est le principe de position, on associe à un chiffre qui a une position dans un nombre une valeur parfaitement définie. Par exemple 1 signifie que l'on a une fois l'unité. Le même chiffre placé dans le nombre 1254 signifie qu'il y a une fois mille. Le deuxième principe fondamental est le principe du zéro. Le zéro matérialise une position où il y a absence d'éléments. Pour que le nombre 10 signifie dix, il faut placer le un sur la colonne des dizaines et matérialiser l'absence d'unité par un zéro. Le zéro donne son sens au nombre en positionnant le 1 dans la colonne des dizaines. Les bases de calcul sont nombreuses même si peu sont réellement utilisées. On peut citer un certain nombre de bases qui ont eu ou qui ont toujours une très grande importance :
En informatique industrielle, chaque signal n'ayant que deux états possibles, état 0 et état 1, les bases que nous seront amenés à utiliser pour coder des signaux seront des multiples de la base binaire (Binaire, Octale et Hexadécimale). L'objet de cette étude portera plus particulièrement sur les problèmes de changement de base (10) en base (2) ou (16) ou l'inverse, ainsi que le passage de base (10) en base (16).
Bit : Contraction des mots anglais BInary digiT. C'est l'unité élémentaire d'information qui ne peut prendre qu'une des deux valeurs suivantes : 0 ou 1. Dans les micro-ordinateurs, les bits sont groupés par huit pour former des mots. Un mot de huit bits est un octet ou en Anglais un byte. Quelquefois, on ajoute à un groupe de bits un bit supplémentaire qui sera un bit de contrôle (en anglais : check bit). Si le bit de contrôle forme avec le nombre total de bits un chiffre impair, on parlera de bit d'imparité (en anglais : odd parity), s'il forme un nombre pair, on parlera de bit de parité (en anglais : parity bit). Les microprocesseurs qui utilisent des mots de 8, 16, 32 bits sont appelés microprocesseurs 8 bits, 16 bits, etc.
Octet : C'est un ensemble de huit bits. On exprime généralement la capacité des mémoires en Kilo-octets (Ko), un Ko vaut 1024 octets (210). Les micro-ordinateurs ont une capacité de mémoire disponible (RAM : Read Only Memory) égale ou supérieure à 512 Ko. Sur les micro-ordinateurs équipés de Pentium, il est fréquent de 258 Mo de mémoire vive. Les disquettes ont une capacité qui varie, selon les modèles, de 180 Ko à 1.44 Mo. Les disques durs peuvent stocker plusieurs dizaines, voire plusieurs Giga-octets de mémoire de masse. On exprime généralement la capacité des mémoires de masse en Mega-octets (Mo) et giga-octets (Go). Un Mo vaut 1000 Ko. Un Giga-octet vaut 1000 Mo. Byte : (Français : octet). Attention donc à ne pas confondre un bit et un byte, un byte c'est 8 bits. Mot : c'est un ensemble de 2 octets, il est donc codé sur 16 bits.
On associe à chaque bit un poids. Ce poids est fonction de la position du bit dans l'octet. LSB :(Least significant Bit) bit de poids faible, c'est le bit qui a le moins de signification dans un octet. Par convention, c'est le bit le plus à droite dans l'écriture d'un mot. Exactement comme dans le nombre 105, c'est le chiffre le plus à droite qui à le moins de poids, la valeur la plus faible. MSB :(Most significant bit) bit de poids fort, c'est le bit qui a le plus de signification dans un octet. Par convention, c'est le bit le plus à gauche dans l'écriture d'un mot. Exactement comme dans le nombre 105, c'est le chiffre le plus à gauche qui à le plus de poids, la valeur la plus forte. Explication par l'exemple : l'octet 1010 1101 représente le nombre 173 en base 10.
Le principe de la méthode par divisions successives consiste à réaliser une suite de divisions par 2. Chaque quotient devient à son tour dividende jusqu'à obtenir un quotient égal à 1. Les restes de ces divisions sont toujours 0 ou 1 puisque les nombres à diviser sont soit pairs soit impairs. Le dernier quotient obtenu (1) est le MSB. Il faut donc remonter les restes successifs du MSB au LSB pour obtenir la valeur binaire d'un nombre entier. Le principe de base est le même que pour le codage binaire. Mais dans ce cas, la base de comptage est la base 16.
Sur cet ensemble de tableaux on voit qu'il est donc nécessaire pour coder complètement tous les termes de coder chacune des variables hexadécimales sur 4 bits. La valeur hexadécimale suivant F(16) sera 16 (10) se codera donc 10 (16) et 0001 0000(2). Ce code est très simple à mettre en oeuvre et fait intervenir la représentation binaire des chiffres décimaux. exemple :
Avec une représentation numérique construite uniquement avec des 1 et des 0 pas question de signes + ou -. Il faut trouver un artifice où les symboles + et - n'interviennent pas. La représentation des valeurs doit donc se faire exclusivement par des valeurs binaires. Le complément vrai ou complément à b (b signifiant la base dans laquelle on travaille) par rapport à un radical N s'obtient en faisant la soustraction A complémenté = N - A, avec N>A. Ainsi le complément vrai en base 10 de 529 par rapport à 1000 est 471, par rapport à 10000 est de 9471. L'opération consiste à complémenter chacun des bits d'une variable binaire. Exemple : Le complément vrai de l'octet 16(16). 16(16) = 0001 0110 (2) Son complément vrai sera :
CPLV 16(16) = 1110 1001 (2) = E9(16)
Remarque : on peut arriver plus rapidement à ce résultat en faisant
FF(16) - 16(16) = E9(16) L'opération consiste à complémenter chacun des bits d'une variable binaire et à ajouter 1. exemple : la négation de l'octet 27(16)
Remarque : on peut arriver plus rapidement à ce résultat en faisant :
100(16) - 27(16) = D9(16) ; (100(16) = FF(16) + 1)
Une soustraction A - B peut s'écrire : A - B = A + (R - B) modulo R. Exemple en base 10 : 529 - 412 = 529 + (1000 - 412) modulo 1000 soit 117. or 117 = (529 + 588) modulo 1000 = 1117 modulo 1000.
On observe que : 1/ Une soustraction se traite comme une addition si on fait intervenir le complément. 2/ Il est nécessaire de formater le complément. Le bit de poids le plus fort est le bit de signe. Par convention," 0" pour le signe "+", "1" pour le signe "-".
Représentons l'opération : 7 - 2 = 5
2ième cas : résultat négatif sur 5 bits. Représentons l'opération : 3 - 8 = - 5
Souvent en automatisme on est amené à travailler par comparaison sur des états de variables internes (bits internes, états d'étapes,…). Les opérations sur mots logiques vont permettre de réaliser ce travail par masquage de certaines variables. On peut utiliser ce principe pour "synchroniser" les sorties d'un automate asynchrone (domaine de la bidouille...).
Le code ASCII (American Standard Code for Information Interchange) est le codage utilisé en informatique pour communiquer entre le clavier d'un micro-ordinateur et l'unité centrale. Il y a deux codes ASCII, le code ASCII standard et le code ASCII étendu. Le clavier est équipé d'un microprocesseur du type Intel 8048 qui scrute les circuits du clavier en permanence. Chaque touche possède un code distinct. Le code ASCII standard possède 127 caractères. Le code ASCII étendu en possède 255. Il faudra donc pour coder l'ensemble des caractères utiliser 7 bits (du bit 0 au bit 6) pour le code ASCII standard et 8 bits pour le code ASCII étendu (du bit 0 au bit 7) . Le code ASCII différencie les lettres majuscules des lettres minuscules. Par exemple, pour écrire "A", le microprocesseur du clavier envoie à l'unité centrale le code 41(16), pour écrire "a", le microprocesseur envoie à l'unité centrale le code 61(16). L'espace entre deux caractères c'est 20(16). Remarque : bit 6 (B6) est le MSB et bit 0 (B0) est le LSB.
|