Codage HTML

Codage html de la couleur

le langage html (pour Hyper Text Marked up Language) est le langage qui sert à écrire les pages des sites Web.

Questions

  1. Nous allons nous concentrer sur le code HTML. À quoi correspondent les deux premiers chiffres de ce code ? Les deux suivants ? Les deux derniers ?
  2. Compléter le tableau suivant en vue de décrypter le code HTML, avec les correspondances les plus significatives

    Code htmlRVBCommentaires
    (0;0;0)
    (255;0;0)
    (1;0;0)
    (10;0;0)
    (11;0;0)
    (15;0;0)
    (16;0;0)
    (17;0;0)
  3. A quoi correspondent les lettres a, b, c, d, e, f du code HTML ?

    Puis donner le code RVB de abcdef et le code HTML de (232;18;115) et expliquez les.

  4. Vous vous êtes peut-être rendu compte que le codage HTML exprime en base 16 les coordonnées RVB.

    En base 16 (notation dite hexadécimale),$a_1a_0=a_1\times 16+ a_0$ où les $a_i$ sont les chiffres 0, 1 … 9, a, b, c, d, e, f, ces derniers représentants 10, 11, 12, 13, 14, 15.

    Quelle est l'écriture hexadécimale de 234 ? Quelle est l'écriture décimale de ab ?

  5. Le chiffre hexadécimal a correspond à 10 en décimal, le chiffre b à 11 en décimal.

    Quelle est l'écriture binaire de 10 ? De 11 ? Du nombre codé ab en hexadécimal ?

    Par quel moyen simple peut-on passer de l'écriture binaire à l'écriture hexadécimale et réciproquement ?

Conversion en binaire et hexadécimal "à la main"

Tout nombre entier $n$ strictement inférieur à 255 peut s' écrire sous la forme $n = a_0+a_1\times 10 + a2\times 10^2$ où $a_0$ est le chiffre des unités $a_1$ le chiffre des dizaines et $a_2$ le chiffre des centaines , ces chiffres sont compris entre 0 et 9

On écrit $n$ en base 10 ainsi $n = a_2a_1a_0$

Comment obtient on les chiffres ?

En divisant $n$ successivement par 10 jusqu'à obtenir un reste strictement inférieur à 10

Les restes successifs donnent les chiffres qu'il faut ensuite écrire dans le sens inverse

Regardons sur un exemple: $n = 123$

De la même manière tout nombre entier inférieur à 255 peut s'écrire $n = a_0+a_1\times 2+ ...+a_7\times 2^7$ où les $a_i$ valent 0 ou 1

$n=a_7a_6.....a_1a_0$ est la représentation de $n$ en binaire

Par exemple $6=110$ et sur un octet $6=00000110$

Pour la numération hexadécimale les 10 chiffres 0,1,2,3,4,5,6,7,8,9 ne suffisent plus puisqu'il faut 16 chiffres, car la base est 16. Par conséquent on rajoute les caractères A,B,C,D,E et F pour désigner ce qui habituellement l'est par 10,11,12,13,14,15

Pour convertir 27 en base 16 on divise 27 par 16 puis le quotient obtenu 1 par 16. En procédant comme précédemment on obtient 27 = 0x1B

Problème

L'intérêt de la base 16 est de rendre l'écriture des octets plus compact et plus lisible :

Puisque les chiffres de la base 16, de 0 jusqu'à F permettent de coder tous les groupes de 4 bits de 0000 = 0 jusqu'à 1111 = F on va coder un octet avec deux chiffres de la base 16

Voici un exemple et vous devrez justifier cette façon de procéder:

A partir de 10101111 on fait deux blocs de 4 bits 1010 1111, on code chaque bloc 1010 = A et 1111 = F et ensuite on regroupe et 10101111 = AF

Justifier que cette opération peut se faire dans les deux sens en partant du cas général:

$a_7a_6.....a_1a_0$ $=a_72^7+a_62^6+a_52^5+a_42^4+a_32^3+a_22^2+a_12+a_0$

Conversion avec Python

Pour convertir un nombre décimal en hexadécimal utiliser la fonction hex()

Par exemple hex(255) va retourner la chaîne de caractères '0xff'

'0x' pour signifier que l'on est dans l'écriture hexadécimale

Questions

  1. Vous devez trouver tout seul comment convertir un nombre en base 16 vers la base 10 à partir d'une documentation fournie

    Ouvrir IDLE et dans l'interpréteur Python taper help(int)

    Bien que l'aide soit en anglais trouver comment convertir un nombre écrit en base 16, en base 10

  2. Donner l'écriture hexadécimale de l'octet '0b10111011'