La Numération.

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

May 1, 2010
524
0
581
Salut tout le monde, içi je vais faire un tutoriel pour apprendre la numération.

Le Numérations c'est quoi ?

En faite ce n'est pas la numération général que je vais vous apprendre mais la numération de programmation (les langages machines), ou pour ceux a qui sa ne parle pas:
- Le simple et utilisé par tous le DECIMAL.
- Le trés connu BINAIRE.
- Le plus compliqué (Oupas :osef:) HEXADICIMAL.

En quoi va consister le Tutoriel et le Sommaire.

Ici je vais tout simplement vous apprendre ( ou vous faire un tutoriel que vous comprendrez pas) sur les bases de c'est 3 Systèmes. Je dis bien la base, car ici c'est un tutoriel pour les debutants il n'y aura aucune complication j'essayerais de faire de la manière la plus simple possible ;)

Ce tutoriel vous aideras aussi a convertir dans tous les sens (Binaire -> Décimal, Décimal -> Hexa, Hexa -> Binaire etc...)

1) Le Système Décimal.

Je ne vais pas m'attarder sur celui la, car c'est au CP qu'on l'apprend =D

Bon pour resumer: Le systeme decimal est le systeme de numération usuel pour compter.
Il comprend 10 chiffres ou symboles qui sont: 0,1,....,9
Ce système est aussi appelé système de base 10.

Exemple:

Il est possible de decomposer ce nombre.
2789 = (2 x 10^3)+(7 x 10^2)+(8 x 10^1)+(9 x 10^0)

Bon pour ceux qui n'ont pas compris le signe "^" correspond a "puissance" en maths.
Pour les nombres a virgule c'est pareil:

156,29 = (1 x 10^2)+(5 x 10^1)+(6 x 10^0)+(2 x 10^-1)+(9 x 10^-2)

Voila c'est fini pas d'exercice sa servirais a rien...
Bon passons a autre choses =P

2) Le Système Binaire.

Pas bien compliqué non-plus mais sa change sur decimal...
Le binaire qu'est ce que c'est:
Dans le système binaire il n'y a que 2 symbole, chiffres ou bit (binary digit) qui sont: 0 et 1 (oui oui tout simplement).

Cette base apparait comme pratique pour distinguer les 2 états logiques fondamentaux des système électroniques.

Bon pour pas faire compliqué, parce que je vous l'ai promis, le bit le plus a gauche est appelé MSB (Most Significant Bit).
Et le bit le plus a droite est aussi appelé LSB (pas LSD ><') (Least Significant Bit)

Et je pense que vous savez surement que 8 bits vaut 1 octet.

Attention il est trés important de ne pas confondre Un Bit et Un Byte, c'est trés important car un byte c'est le mot anglais pour dire octet (c'est pour sa que 250kb/s et très diffèrent de 250kB/s)

Bon maitenant si j'ecris:
1001, vous allez me dire "Heu ba mille-un", vous avez pas tort et même raison :)
Et oui pour différencier un nombre decimal et une suite de bit il faut rajouter devant les bit un %

Donc:

1001 est trés different de %1001.
Car 1001 vaut %11,1110,1001 (Je crois, j'ai fais sa vite mais il me semble que se soit bon), vous comprendrez aprés pourquoi j'ai mis des virgules.
Et %1001 vaut 9 :) (encore un fois mes calcule sont a verifier je fais sa vite ;))

Déstructurons mon plan pour vous expliquez comment j'ai procédé.

Le conversion décimal - Binaire:

Avant toutes choses il faut que vous sachiez les puissances de 2... Je vais vous les indiquer mais elles sont trés simple a retenir.
C'est important car le Binaire fonctionne en puissance de 2. Comment l'expliquer proprement, je ne sais pas mais vous comprendrez :)

Bon ba c'est parti:
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
etc... =512
= 1024
= 2048

Bon aller sa suffirat vous inquietez pas :)
Vous avez sans doute remarqué que nombreux de vos composants informatique fonctionne sous puissance de 2, exemple la RAM 1024mo/2048mo/4096mo ou plus pour les chanceux et moin pour les malchanceux ...


Une fois que vous savez sa, tout ira tout seul.
Comment convertir le decimal en binaire:
Je vais commencé par un exemple car c'est plus explicite que du discours.

Bon prennons 45 c'est un bon nombre :arf:
Tout d'abord il faut décomposer en puissance de 2 (le revoila lui :pleurer:)

45 = 32+8+4+1
Et voila il suffit de convertir en puissance de 2. Sans oublier les puissances qui n'apparaisse pas.
32 + 8 + 4 + 1 = (1 x 2^5)+(0 x 2^4)+(1 x 2^3)+(1 x 2^2)+(0 x 2^1)+(1 x 2^0) = 1.2^5 + 0.2^4 + 1.2^3 + 1.2^2 + 0.2^1 + 1.2^0 = %101101

Pour ceux qui n'ont pas compris les "." signifie multiplié (encore un therme mathématiques :))

Il y a une autre technique qui consiste a diviser par 2 jusqu'à ce que le quotient soit égal a 0.

Cette methode convient mieux au grand nombre :
Prenons 89

89/2 = 44 reste 1
44/2 = 22 reste 0
22/2 = 11 reste 0
11/2 = 5 reste 1
5/2 = 2 reste 1
2/2 = 1 reste 0
1/2 = 0 reste 1

Le quotient vaut 0 donc c'est fini !


Maintenant il suffit de lire du bas en haut: 89 = %1011001

Exercice:

Conversion de 23 et de 59:
A vous de jouer !

23 = %10111
59 = %111011

Conversion Binaire - Décimal:

Encore une fois un exemple est plus explicite qu'un texte:
Les puissances de 2 sont encore a l'appuie :):
%11100110 = 1.2^7 + 1.2^6 + 1.2^5 + 0.2^4 + 0.2^3 + 1.2^2 + 1.2^1 + 0.2^0 = 230

Comment expliqué ceci je sais pas non-plus mais c'est comme sa qu'on fait, a vrai dire il n'y a pas tellement d'explication.

Mais c'est a peut prés pareil qu'avant.

Bon ba des exercices:
Convertir %110011 et %10011100 en decimal !
a vous de jouer !

%110011 = 51
%10011100 = 156


Bon ba voila la partie Binaire est terminé !
J'espere vous avoir eclairé !


Par contre sa serais gentil de ne pas copie ce tutoriel sur le binaire ou bien de mettre les sources ;)

Aprés 2mois de retard voici la fin de mon tuto =D
Pourquoi 2 mois ? J'avais zappé que j'avais fait cela ...

3) Le système hexadécimal.


L'Hexadecimal qu'est ce que c'est ? A quoi sert il ?


En quelques mots:
Ce systeme est composé de 16 symboles qui sont 0,1,2,3,....,9,A,B,C,D,E,F (et non de 0 a 16)
Ce systeme c'est developpé car il est souvent utilisé dans les systemes microprogrammés.

Il sert a d'autre chose que vous decouvrirez au court de votre aventure dans l'informatique ...

Le systeme hexadecimal est aussi nommé base 16 (du fait qu'il soit composé de 16 symboles)

Maintenant comment savoir si 777 est en decimal ou en hexa ?
777 est en decimal, car pour l'hexadecimal on notera $777


Ce qu'il faut savoir en hexa c'est sa table de puissance, comme pour le binaire.
La difference c'est qu'au lieu de mettre 2^x on mettra 16^x.

Table des puissances:
16^0 = 1
16^1 = 16
16^2 = 256
16^3 = 4096
16^4 = 65536


On ira pas plus loin ici parce que sa pars loin.

Passons aux conversions:

Conversion Hexadecimal-Decimal:

Pour commencer je rappel que:
F = 15
E = 14
D = 13
C = 12
B = 11
A = 10
9 = 9
etc...


Bon rien ne vaut un petit exemple.
La conversion de $BAC en décimal.

$B A C = 11.16^2 + 10.16^1 + 12.16^0
$B A C = 2816 + 160 + 12
$B A C = 2988

Comment procédé ?
On transforme le symbole en la valeur décimale puis on met en oeuvre la table des puissances au dessus en mettant toujours le plus gauche la puissance la plus faible puis on augmente a chaque symbole...

Conversion Décimale-Hexadecimale:

Trés simple encore une fois, il suffit de diviser la valeur decimale par 16 puis transformer le reste en le symbole voulu.

Exemple: 214 = $ ?

214/16 = 13 + reste 6
13/16 = 0 + reste 13

Donc 6 = 6 et 13 = D
214 = $D6

Comme avant on s'arrete quand on ne peut plus diviser...

Conversion Hexadecimal-Binaire.

Procédé un peu plus complexe mais au final trés simple.
Prenons un exemple un peu plus difficile que $BAC prenons $8C0F

La méthode est la suivante: Decomposer 8C0F de cette facon:

8 | C | 0 | F |

Chaque symbole ci dessus correspond a une valeur decimal n'est ce pas (voir un peu plus au dessus). Sachant que ne l'oublier pas F = 15. Ensuite chaque symbole sera un groupe de 4 bits (voir Systeme binaire au dessus).
4bits de facon avoir la valeur de chaque symbole....

Exemple: $8C0F


8 | C | 0 | F |
1000 |1100|0000|1111|

Voila votre conversion est fini !
Donc $8C0F = %1000.1100.0000.1111

Voila au final c'est pas ci dur ;)

Conversion Binaire-Hexadecimal.

La methode est identique a celle juste au dessus mais dans un sens inverse !

Par exemple: %1010100100101110 en $

Sachant que %1010.1001.0010.1110
Decomposons:

1010|1001|0010|1110

Bon meme si vous devriez le savoir:
%1010 = 10 = $A
%1001 = 9 = $9
%0010 = 2 = $2
%1110 = 14 = $E

Donc
1010|1001|0010|1110
A|9|2|E

%1010.1001.0010.1110 = $A92E

Attention: Toujours commencer a decomposer le binaire en pack de 4bits de gauche a droite car par exemple si on a %1101100011 il faut decomposer :%0011.0110.0011 et non comme ceci %1101.1000.1100. Vous vous rendez bien compte que c'est trés different !


4) Un peu de pratique, des exercices quoi.


Voici quelques exercices:

1°) Convertir en binaire puis en hexadecimal:

152 / 256 / 110001.

152 = %1001.1000 = $98
256 = %1.0000.0000 = $100
110001 = %0001.1010.1101.1011.0001 = $1ADB1

2°) Dire a quel systeme peuvent appartenir ces symboles:


1001 / 11 / 596 / 11000012111000 / 59A / %1101

J'utiliserais les bases pour definir les systemes...
2 = Binaire, 10 = Decimal, 16 = Hexa

1001 = 2/10/16
11 = 2/10/16
596 = 10/16
11000012111000 = 10/16
59A = 16
%1101 = 2

3°) Convertir en Decimal.

%1100.1110 / $AE / %1110.0001.1101 / %12 / $11 / 1001 / $B0FA

%1100.1110 = 2 359 880
$AE = 174
%1110.0001.1101 = 3613
%12 = Petit piege il n'y a pas de 2 en binaire comme peux l'indiquer le symbole "%"
$11 = 17 (ici on est bien en hexa ;))
1001 = 1001, un petit piege en plus ici il n'y a rien pour anoncer que nous somme en binaire ou en hexa).
$B0FA = 45306

Voila j'espere vous avoir aidé a comprendre les systemes machines, Je suis desolé de vous avoir fait attendre 2 mois pour la partie hexa j'avais vraiment oublié cela =D

Je compte sur vous pour ne pas copier coller ou bien de citer les sources.


Il y a surment des fautes d'orthographe, desolé ;)
 
Last edited:

HackeurD

Membre actif
Jul 22, 2010
275
0
581
/usr/src/kernels/
Merci beaucoup pour le binaire mais j'ai une question, %11100110 = 1.2^7 + 1.2^6 + 1.2^5 + 0.2^4 + 0.2^3 + 1.2^2 + 1.2^1 + 0.2^0 = 230 pour y a exposant 7 et 1.2 ? ://
 
May 1, 2010
524
0
581
Ah d'accord, desolé.
Voila c'est parce que en commancant par le LSB il faut mettre 2^0 puis continué, 2^1, 2^2, 2^3, 2^4, 2^5, 2^6 et 2^7
Je sais je suis pas trés explicite mais j'espère que sa ira.
Il est aussi possible de continué en faisant 0.2^8 mais comme le chiffre est 0 ce n'est pas nécessaire.
 

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
C'est quand le rajout sur l'hexa ( il est juste dans le titre ) et l'octal, c'est les seuls qui te manque pour avoir les 4 plus utilisé !

L'hexa est quand même assez simple, je trouve que le binaire est plus chiant ^^
 
May 1, 2010
524
0
581
L'ajout de l'hexa quand j'aurais le temps donc ce week end parce que mine de rien, tout écrire et faire les calculs sa m'a pris 2h environ...

Et l'octal je connais pas donc sa sera dans un autre post plus tard ;)

En se qui concerne la difficulté, je suis d'accord avec toi c'est pas très compliqué mais comprendre au début est plus difficile :)
 
May 1, 2010
524
0
581
ah bizarre =P
Le binaire je trouve sa simple mais dans mes calculs je fais souvent beaucoup de fautes U_u
 
May 1, 2010
524
0
581
Je suis desolé du double-post mais je voulais juste prevenir que j'ai rajouter la partie hexadecimal aprés 2mois bonne lecture ;)