Re: fichier doc.gif

Publié par Constance le 08/09/2007 17:08:53
Citation :
je comprends pas ce qu'il faut faire.
comment je liste des octets, [...]
Avec un éditeur hexadécimal, pardi ^_^

Citation :
et c'est quoi en hexadecimal ???
Bon, alors on va commencer par les bases (c'est le cas de le dire ) : tu as certainement entendu parler du fait que les ordinateurs "fonctionnent en binaire" ?

Ce qui nous intéresse là dedans, c'est surtout par rapport à l'aspect numérique du stockage de données.

En effet, un bit (l'unité de mémoire la plus basique dans l'informatique actuelle) peut avoir 2 valeurs, on va dire 0 ou 1.
Un octet, ce n'est qu'une suite de 8 bits.
Donc un octet, c'est un nombre à 8 chiffres, "en base 2" ; nous autres humains occidentaux utilisons plus communément la base 10, c'est à dire que nous avons 10 chiffres, de 0 à 9 inclus, pour écrire nos nombres, mais peu importe le nombre de chiffres, un nombre peut toujours être écrit quelle que soit "la base" (= le nombre de symboles, = chiffres) utilisée.

Si je prends le nombre 205 (en "base 10"), on peut le décomposer comme suit :
2 x 100 + 0 x 10 + 5 x 1.

Quand on écrit un nombre dans une base particulière, si le nombre s'écrit "abc" en base alpha, alors il est égal à :

a x (alpha au carré) + b x alpha + c x 1 ... évidemment plus le nombre de chiffres est grand, plus la puissance associée à alpha pour le chiffre le plus à gauche est élevée, sachant qu'on part de la droite avec "puissance 0" ( alpha puissance 0 = 1).

Pour écrire 205 (notre exemple) en base 2 (binaire), on cherche donc la combinaison des sommes des différentes puissances de 2 qui donnent ce nombre.

En l'occurrence, il s'agit de :
11001101

En effet, 205 (en base 10) = 1 x 128 + 1 x 64 + 0 x 32 + 0x16 + 1x8 + 1x4 +0x2 x1 ;
écrit sous forme de puissances :
1 x 2^7 + 1x2^6 + 0x2^5 + 0x2^4 + 1x2^3 + 1x2^2 + 0x2^1 + 1x2^0 .

La base hexadécimale quant à elle comporte 16 chiffres.
Comme nous n'avons que 10 chiffres "traditionnels", on remplace les 5 suivants par les lettres de A à F. De toute manière, chiffres ou lettres, ce ne sont jamais que des symboles...

Tu auras sans doute remarqué qu'un nombre en binaire comporte plus de chiffres que le même nombre écrit en décimal ; c'est une règle générale : plus on a de symboles différents dans la base, moins on a besoin d'en utiliser pour écrire un même nombre.

Bon, j'essaie d'abréger un peu : justement, ce qui est pratique avec la base hexadécimale, c'est que le carré de 16 est égal à 256, soit justement le nombre de valeurs possibles pour un octet. Du coup, avec 2 chiffres à 16 valeurs possibles exactement, on peut écrire n'importe quelle valeur d'un octet, ni plus ni moins.

Le fait qu'on utilise encore relativement peu de symboles différents est pratique pour nous autres humains et le fait qu'on utilise peu de chiffres pour écrire un nombre est pratique aussi, ce qui explique pourquoi la base hexadécimale est si populaire quand on veut vérifier les valeurs qu'ont des suites d'octets.

Sachant qu'un fichier n'est qu'une suite de bits et que chaque groupe de 4 bits peut être converti simplement en un et un seul chiffre hexadécimal, cela permet de vérifier de façon beaucoup plus (je répète beaucoup ce mot dernièrement, mais tant pis...) pratique que les premiers octets d'un fichier correspondent bien (ou pas) à un en-tête du format auquel il est supposé être.

Voilà, j'espère que ces explications ne sont pas trop confuses, c'est sûr que ça ne vaut pas un bon vrai cours sur les bases numériques, mais avec un peu de chance c'est tout de même compréhensible :p

Cette contribution était de : http://www.gratilog.net/xoops/newbb/viewtopic.php?forum=1&topic_id=2741&post_id=13966