Les systèmes binaire et hexadécimal

Les systèmes binaire et hexadécimal

Message non lupar Lyan53 » Samedi 11 Décembre 2010 à 16:01:48

Systèmes binaire et hexadécimal



Avant de débuter en ROMHacking , il est nécessaire de bien assimiler ce que sont les systèmes "hexadécimal" et "binaire" puisque c'est précisément ces derniers qui seront à la base de toute analyse que vous ferez , ainsi que de tout hack possible sur un JV , et ce , peu importe le support jeu dont il sera question . Vous comprendrez donc très rapidement qu'il est indispensable d'être familiarisé avec ces derniers avant de débuter quoi que ce soit d'autre , auquel cas vous ne pourrez aller bien loin .


Le binaire :

Toute personne sachant compter , connait le langage "décimal" composé de chiffres allant de "0" à "9" . Comme son nom l'indique le décimal nous permet de compter sur une base de 10 .

En informatique , la donne est différente puisqu'un ordinateur lui ne compte qu'en langage "binaire" uniquement composé de "0" et de "1" . C'est donc une base de 2 .
Ainsi , toute opération exécutée par votre ordi ne sera fondée que sur des suites de calculs binaires . Il est important de savoir également que chacun de ces "0" ou "1" se nomme un "bit" .

Je vois déjà la question venir : "Oui mais le binaire n'a que 2 chiffres alors comment l'ordinateur peut il faire des calculs décimaux ?"

La réponse est très simple , le "binaire" interprète le "décimal" en "octets" , un "octet" étant une suite de "8 bit" .

Chacun des "bit" composant un "octet" sera donc multiplié par une valeur définie selon sa position dans l'octet , les multiplicateurs étant : x1 , x2 , x4 , x8 , x16 , x32 , x64 , x128 .

Voyons ça sous forme de tableau ça vous sera plus clair :
Image

Comme vous le voyez sur cette image , tout comme en décimal , la valeur la plus à gauche est la plus forte et celle la plus à droite la plus faible .

Voyons maintenant comment interpréter nos valeurs "décimales" en valeurs "binaires"

Pour cela , aidons nous d'un autre tableau sur la base de celui ci dessus :
Image

Comme vous pouvez le constater dans le tableau , nos "0" et nos "1" servent à activer ou non nos multiplicateurs , ainsi , suivant la position des "0/1" dans l'octet , vous pourrez déterminer votre valeur décimale .

Exemples :

Note/ De préférence il vaut mieux comme dans toute opération calculer de droite à gauche

3 = (1x1) + (1x2) + (0x4) + (0x8) + (0x16) + (0x32) + (0x64) + (0x128) = (en binaire) 00000011
7 = (1x1) + (1x2) + (1x4) + (0x8) + (0x16) + (0x32) + (0x64) + (0x128) = (en binaire) 00000111
9 = (1x1) + (0x2) + (0x4) + (1x8) + (0x16) + (0x32) + (0x64) + (0x128) = (en binaire) 00001001
38 = (0x1) + (1x2) + (1x4) + (0x8) + (0x16) + (1x32) + (0x64) + (0x128) = (en binaire) 00100110

etc...

Puisqu'un octet contient "8 bit" , la valeur maximale en binaire de ce dernier sera donc : 11111111 , ce qui équivaut à 255 en décimal . Un octet à donc une valeur décimale comprise entre 0 et 255 (ce qui nous fait 256 possibilités puisque le 0 est compté dans le lot) .

Bien entendu à partir du moment ou la valeur décimale dépasse les 255 , alors on passe à plusieurs octets , ainsi votre tableau s'élargit et compte tout autant de multiples supplémentaires (x256 , x512 etc ...) pour pouvoir correspondre à votre valeur décimale .
Il est juste important pour la suite que vous sachiez exactement comment fonctionne le binaire et également ce qu'est un octet ;)


Comme je ne suis pas sûr d'avoir été totalement clair , je vous invite si vous n'avez pas tout compris ou si vous souhaitez approfondir la chose , à consulter ce >> wiki << qui traite du binaire plus en détails .




L'hexadécimal :


Tout comme le binaire est sur une base de 2 et le décimal sur une base de 10 , l'hexadécimal permet de compter sur une base de 16 (hexa = 6 , décimal = 10) .

Et la fameuse question : "Oui mais pourquoi utiliser une base de 16 et pas une autre ?"

La réponse est également simple , la base de 16 est celle qui colle le mieux pour faire une interprétation à la fois simplifiée et contractée du système binaire , qui je le rappelle , est celui utilisé par l'informatique dans toute opération quelle qu'elle soit .

Ainsi donc , comme un "octet" , qui est composé de "8 bit" (16 étant un multiple de 8) , à forcément une valeur décimale comprise entre 0 et 255 (soit 256 possibilités en incluant le 0) , la base de 16 va donc nous permettre de facilement l'interpréter puisque 16 x 16 = 256 , soit pile poil le nombre possibilités maximum qu'un octet peut contenir .

Vous imaginez bien que de faire des analyses dans de fichiers contenant pour chaque octet des suites de 8 bits va rapidement se révéler complexe et également prendre une place phénoménale ! Le système hexadécimal est donc l'alternative au binaire à la fois pratique et beaucoup plus accessible , que nous autres pauvres humains qui ne sommes pas comme des machines , pourrons plus facilement utiliser .


Maintenant que vous avez compris pourquoi le système hexadécimal est si intéressant et autant utilisé en informatique , apprenons un peu à identifier sa logique de fonctionnement , ce qui nous amène à la question : "Comment fait on pour compter sur une base de 16 alors que nous ne possédons que 10 chiffres en tout ?"

Là encore la réponse est facile , on va utiliser des lettres de l'alphabet et le tour sera joué ;)

En hexadécimal on compte donc comme suit : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F , 10 , 11 , ... , 18 , 19 , 1A , 1B , ... , 1E , 1F , 20 , 21 , ... , 98 , 99 , 9A , 9B , ... , 9E , 9F , A0 , A1 , etc ... jusqu'à "FF "qui sera donc la valeur max d'un octet soit 255 en décimal .

Note importante : Lorsque l'on note une valeur hexadécimale , on la précède généralement de "0x" pour bien la différencier d'une valeur décimale habituelle . Certains utilisent également le signe "&" mais la première est , il me semble , bien plus courante donc , pensez à bien manier vos valeurs de la sorte lorsque vous les noterez , ça évitera toute confusion .

Pour exemple :
10 = décimal (équivaut à 0xA en hexadécimal)
0x10 ou &10 = hexadécimal (équivaut à 16 en décimal)

Pour ce qui est des correspondances entre décimal et hexadécimal , si vous ne l'avez pas encore compris , ça se compte de cette manière :

0 = 0x0
1 = 0x1
2 = 0x2
...
8 = 0x8
9 = 0x9
10 = 0xA
11 = 0xB
12 = 0xC
13 = 0xD
14 = 0xE
15 = 0xF
16 = 0x10
17 = 0x11
...
25 = 0x19
26 = 0x1A
27 = 0x1B
...
31 = 0x1F
32 = 0x20
33 = 0x21
...
158 = 0x9E
159 = 0x9F
160 = 0xA0
161 = 0xA1
...
254 = 0xFE
255 = 0xFF

A partir d'ici on passe à 2 octets :

256 = 0x0100
257 = 0x0101

Pour ces 2 dernières valeurs sur 2 octets , elles peuvent également être notées :

256 = 0x100
257 = 0x101

Cela reviendra au même ;)


Voilà , j'espère vous avoir aidé à comprendre un peu mieux ce que sont les systèmes binaire et hexadécimal à travers ces quelques explications , il vous sera indispensable de bien assimiler ça si vous souhaitez par la suite persévérer dans votre apprentissage du ROMHack , ces derniers sont vraiment la base de tout .

Pour ce qui est de l'hexadécimal si quelque chose vous a échappé ou si vous souhaitez en savoir plus , je vous invite à consulter ce >> wiki << qui est très complet .


Après ça , vous devriez en théorie être moins perdus lorsque vous utiliserez un éditeur hexadécimal , le meilleur ami du ROMHackeur et surtout son outil de base .



Astuce : Notez également que vous pourrez aisément faire appel à la calculatrice "windows" lors de vos travaux , elle vous permettra de faire très facilement les conversions entre décimal , hexadécimal et binaire .

Cette dernière se situe dans : Démarrer > Tous les programmes > Accessoires > Calculatrice (réglez là sur : Affichage > Scientifique/Programmeur)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 46
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Les systèmes binaire et hexadécimal

Message non lupar LZZ » Lundi 24 Janvier 2011 à 23:00:16

Yes je comprend enfin ce que sont les systèmes binaire et hexadécimal, Lyan53 t'es meilleur que mon prof d'initiation aux sciences de l'ingénieur je crois! ^^
_____________________________________________________
Image

C'est bien plus beau que tout ce que j'aurais pu imaginer...
Avatar de l’utilisateur
LZZ
 
Messages: 29
Âge: 29
Enregistré le: Dimanche 16 Janvier 2011 à 20:41:07
Genre: Homme

Re: Les systèmes binaire et hexadécimal

Message non lupar pinktagada » Mercredi 4 Janvier 2012 à 23:00:40

Je rajouterais ce truc là au tutoriel, un truc hort intéressant et vraiment à la fois simple et complet.
Avatar de l’utilisateur
pinktagada
 
Messages: 502
Âge: 41
Enregistré le: Lundi 22 Novembre 2010 à 21:32:31
Localisation: Asgard
Genre: Femme

Re: Les systèmes binaire et hexadécimal

Message non lupar anti-hack » Vendredi 30 Août 2013 à 9:16:23

je tiens a vous informé que ce tutoriel et erroné
anti-hack
 
Messages: 1
Enregistré le: Vendredi 30 Août 2013 à 9:13:46
Genre: Non spécifié

Re: Les systèmes binaire et hexadécimal

Message non lupar pinktagada » Vendredi 30 Août 2013 à 11:25:15

Ah et ? Tu peux développer un peu ? Je ne demande qu'à apprendre.
Avatar de l’utilisateur
pinktagada
 
Messages: 502
Âge: 41
Enregistré le: Lundi 22 Novembre 2010 à 21:32:31
Localisation: Asgard
Genre: Femme

Re: Les systèmes binaire et hexadécimal

Message non lupar BahaBulle » Vendredi 30 Août 2013 à 12:11:53

anti-hack a écrit:je tiens a vous informé que ce tutoriel et erroné

Je tiens à vous informer que ce message est truffé de fautes :)
Avatar de l’utilisateur
BahaBulle
 
Messages: 280
Enregistré le: Lundi 20 Décembre 2010 à 18:18:17
Genre: Homme


Retourner vers ROMHacking

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

x

#{title}

#{text}