|
|
1) Les systèmes de numérations
Le système DECIMAL (base de 10) :
Le système décimal vous le connaissez tous, il est composé de 10 chiffres (0 à 9) avec lesquels on fait les nombres. Si le nombre dépasse 9, on augment le nombre devant le 9 (s'il n'y a rien s'est 0) d'une unité et le 9 passe à 0. ( 0,.....,8,9,10,11,......,19,20,21 ect...)
Pourquoi je vous parle de cela , c'est pour faire comprendre par analogie le système binaire et hexadécimale.
Le système BINAIRE (base de 2) :
En informatique la machine ne connait que 2 états : 0 (le courant ne passe pas ) 1 (le courant passe) Chacun de ces états peut être associé à la valeur d'un BIT. On compte de la même manière qu'en décimal :
BINAIRE + DECIMAL |
Voici quelque défintion :
On appelle un OCTET (ou BYTE ), un nombre composé de 8 BIT (c'est à dire 8 "0" ou "1" ) par exemple : 01001100
On appelle un MOT (ou WORD ),un nombre composé de 16 BIT = 2 OCTET .
On appele un DOUBLE MOT (ou DWORD ),un nombre composé de 32 BIT = 4 OCTET = 2 MOT .
Plus rarement utilisé (utilisé pour le coprocesseur arithmétique ,je crois): FWORD = 6 OCTET QWORD = 8 OCTET TWORD = 10 OCTET
Le système HEXADECIMAL (base de 16) :
Le système hexadécimal a était crée pour simplifié la notation binaire . En effet ,il est lassant d'écrire de longue chaine de '0' et de '1' ,de plus des erreurs peuvent en découler,aussi représente-t-on par un seul chiffre chaque groupe de 4 chiffres binaires.Ce qui fait 16 combinaison possible . Le système hexadécimal est composé comme vous l'avait deviné de 16 chiffres. On a reprit les 10 chiffres (0 à 9) du système décimal et comme il n'existé pas de symbole pour les chiffres 10 à 15 ,on a décidé de prendre les 6 premières lettres de l'alphabet( A,B,C,D,E,F).L'hexadécimal n'est en fait que du binaire condencé. on obtient en comptant : 0,1,2,........,8,9,A,B,C,D,E,F,10,11,12,........,19,1A,1B,1C,1D,1E,1F,20,21,....... ........98,99,A0,A1,.....,A9,AA,.....,AF,B0, ect ... J'espère que vous avez compris.
VOICI UN TABLEAU RECAPITULATIF :
DECIMAL+ BINAIRE + HEXADECIMAL |
REMARQUE:
Pour connaitre la base auquelle le nombre appartient ,il faut mettre dérrière celui-ci, une lettre qui indique sa base . sur PC :
pour un nombre binaire ,on met un B : 10101111B
pour un nombre décimal ,on met un D : 42D (ou on ne met rien :42)
pour un nombre héxa ,on met un H : 12H
IL NE FAUT PAS L'OUBLIER quand vous programmerez . Avec certains assembleurs ,il faut mettre un '0' devant un nombre héxadécimal quand il commence par une lettre (ex: 0d6H)
on peut trouver aussi d'autre notation que l'on met devant : (qui marche peut-être sur PC avec certain assembleur ?)
pour un nombre binaire ,on met un % : %10101111
pour un nombre décimal ,on met un ? : ?42 (je ne sais plus ,| peut-être) par défaut rien
pour un nombre héxa ,on met un $ : $12 (C'est le cas avec l' atari ST et la programmation des microcontrolleurs)
2) La convertion entre chaque systemes
La convertion binaire => héxadécimal :
Prenons un nombre binaine au hazard ,par exemple : 10111011010101B Pour le convertir en HEXA(=héxadécimal),il suffit de séparer (en commençant par la droite) le nombre binaire en groupe de 4 chiffres binaires ,puis de regarder dans le tableau (que vous devrez connaitre par coeur) pour y retrouver la valeur conrespondante.
NOMBRE BINAIRE : (00)10 1110 1101 0101 B |
on obtient : 10111011010101B=2ED5H
La convertion héxa => binaire :
On procéde de la manière inverse .(je sur que vous avez compris)
La convertion binaire => décimal :
Prenons un nombre décimal au hazard : 483
Il peut s'écrire : (4*10^2)+(8*10^1)+(3*10^0) 10 étant sa base (décimal = base de 10)
( ^ veut dire puissance : 10^0 =1)
Pour les nombre binaire on fait la même chose. on prend un nombre binaire(base de 2) au hazard : 1001101B
Il peut aussi s'écrire : (1*2^6)+(0*2^5)+(0*2^4)+(1*2^3)+(1*2^2)+(0*2^1)+(1*2^0)
= 64 + 0 + 0 + 8 + 4 + 0 + 1
= 77 en décimal (77D)
C'est comme ça qu'on fait pour convertir un nombre binaire en décimal .
La convertion décimal => binaire :
Pour convertir un nombre décimal en binaire ,il suffit de diviser le nombre décimal par la base binaire qui est de 2 ,jusqu'a ce que le résultat soit inférieur ou égale au plus grand chiffre de cette même base (binaire) ,c'est à dire =<1 et il faut noter à chaque division par 2 le reste (qui indiquera le nombre binaire avec le dernier résultat qui est toujours 1). ça parait compliquer ,mais avec un exemple vous allez comprendre . on va convertir 211(décimal) en binaire:
211 : 2 = 105 reste 1
105 : 2 = 52 reste 1
52 : 2 = 26 reste 0
26 : 2 = 13 reste 0
13 : 2 = 6 reste 1
6 : 2 = 3 reste 0
3 : 2 = 1 reste 1
dernier résultat(=<1) = 1
On obtient ainsi le nombre binaire .Il faut le lire en commençant par le bas On a 211 = 1101 0011B
REMARQUE : On peut aussi appliquer cette méthode pour convertir un nombre héxadécimal en binaire.
La convertion héxadécimal => décimal :
Pour convertir un nombre héxadécimal en décimal on aplique la même méthode que pour la convertion binaire => décimal . Prenons un nombre héxadécimal(base de 16) au hazard ,par exemple : 3D4H Vous savez maintenant qu'il peut aussi s'écrire :
(3*16^2)+(D*16^1)+(4*16^0)
= (3*256) +(13*16) +(4*1)
= 768 + 208 + 4
= 980 en décimal (simple non?)
REMARQUE: On peut aussi apliquer la méthode précédente (décimal =>binaire) mais avec les valeurs appropriés.(qui marche pour toute les convertions ,mais pas toujours pratique)
EXEMPLE : On prend un nombre héxa au hazard : 3CEH et on divise ce nombre par la base (décimal) à convertir ,c'est à dire 10D=AH jusqu'a ce que le résultat soit inférieur ou égal au plus grand chiffre de cette même base(décimal) c'est à dire =<9 :
3CEH : AH = 61H reste 4
61H : AH = 9H reste 7
dérnier résultat (=< 9) = 9
on lit le chiffre du bas vers le haut : 3CEH = 974D
La convertion décimal => héxadécimal :
Pour convertir un nombre décimal en héxadécimal on peut d'abord le convertir du décimal => binaire puis du binaire => héxadécimal .
Ou on peut apliqué la méthode décimal => binaire exemple: soit 554 un nombre décimal pris au hazard . 554 : 16 = 34 reste 10D = AH 34 : 16 = 2 reste 2 derniér résultat (=< 16D=FH ) =2 il faut lire le nombre de bas en haut : 554D=22AH
3) Les nombres non signés et signés en informatique
En
informatique les nombres ne peuvent pas être infinie , il ont une certaine taille : 8 bit(=OCTET) = 2^8 = 256 combinaison
C'est un nombre qui va de 0 à 255(= FFH=11111111B) (non signé)
16 bit(=WORD) =2^16 = 65536 combinaison
C'est un nombre qui va de 0 à 65535(= FFFFH=1111111111111111B) (non signé)
32 bit(=DWORD)= 2^32 = 4294967296 combinaison
C'est un nombre qui va de 0 à 4294967295(= FFFFFFFFH= 11111111111111111111111111111111B) (non signé)
Quand le microprocesseur fait des calculs avec des instrutions qui prennnent en compte le signe,il connait le signe du nombre grace au bit de plus haut rang (c'est à dire le bit le plus à gauche) : s'il est à 0 c'est un nombre positif. s'il est à 1 c'est un nombre négatif
Avec un octet ,c'est le 8éme bit qui sert de signe : -127(80H)=<octet=<127(7FH)
Avec un word , c'est le 16éme bit : -32767(8000H)=<word=<32767(7FFFH)
Avec un dword , c'est le 32éme bit : -2147483647(80000000H)=<DWORD=<2147483647(7FFFFFFFH)
4)Le BCD (Binaire Codé Décimal)
Le BCD n'est pas un nouveau système de numération,c'est seulement une notation pour écrire les nombres décimaux en binaire. (ndlr: on trouve souvent ce système dans les numéros de versions des cartes, gestionnaires ...) Pour écrive les nombres décimaux en binaire ,il faut 4 bit :
decimal + BCD |
Et on s'arrete la, les autres combinaisons sont interdites
Il y a 2 format BCD.
L'un dit compacté ,on écrit alors 2 chiffres BCD dans un octet : 56 = 0101 0110 (en BCD)
L'autre dit non compacté , on écrit alors un seul chiffre BCD dans un octet : 8 = 0000 1000 (en BCD)
|