{"id":22,"date":"2008-01-05T11:24:19","date_gmt":"2008-01-05T10:24:19","guid":{"rendered":"http:\/\/wp1.fredptitgars.net\/index.php\/2008\/01\/05\/les-differentes-bases-numeriques\/"},"modified":"2008-01-05T11:24:19","modified_gmt":"2008-01-05T10:24:19","slug":"les-differentes-bases-numeriques","status":"publish","type":"post","link":"https:\/\/fredptitgars.ovh\/?p=22","title":{"rendered":"Les diff\u00e9rentes bases num\u00e9riques"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Comme vous avez surement d\u00fb d\u00e9j\u00e0 en entendre parler, l&rsquo;unit\u00e9 fondamentale en informatique est le bit. Un bit est une entit\u00e9 qui peut prendre uniquement deux valeurs: 0 ou 1. Cela correspond plus physiquement \u00e0 un \u00e9tat \u00e9lectrique, nul pour 0 ou non-nul pour 1.<\/p>\n<p>Or un bit n&rsquo;est pas suffisant pour coder tout les informations que l&rsquo;on souhaiterait manipuler. On va donc employer des groupement de plusieurs bits. Un octet (en anglais byte, \u00e0 ne pas confondre avec bit) est un regroupement de 8 bits.<\/p>\n<p><code><br \/>\n0 0 0 0 0 0 0 0<br \/>\n7 6 5 4 3 2 1 0<br \/>\n<\/code><\/p>\n<p>On num\u00e9rotera les bits de la facon suivante: de la droite vers la gauche, en partant de 0. Le bit 0 est couramment appel\u00e9 bit de poids faible, le bit le plus \u00e0 gauche est quant \u00e0 lui appel\u00e9 bit de poids fort (low-order bit and high-order bit en anglais).<\/p>\n<p>Un groupe de 16 bits, soit deux bytes, est appel\u00e9 un mot (word en anglais). Le byte de gauche est appel\u00e9 byte de poids fort, le byte de droite byte de poids faible.<\/p>\n<p>Un groupe de 32 bits, soit 2 mots, est appel\u00e9 un mot long. Le mot de gauche est appel\u00e9 byte de poids fort, le byte de droite byte de poids faible.<\/p>\n<p>Attention: toutes les conversions \u00e0 suivre se basant sur le binaire ou l&rsquo;hexad\u00e9cimal sont valables pour des nombres binaires dont le bit de poids fort est 0, et pour les nombres hexad\u00e9cimaux dont le premier chiffre est strictement inf\u00e9rieur \u00e0 8. Dans le cas contraire, on tombe dans le cas de nombre n\u00e9gatifs, cas que nous d\u00e9taillerons plus tard.<\/p>\n<h2>Notations<\/h2>\n<p>Le fait de disposer d&rsquo;autant de bases a un l\u00e9ger inconv\u00e9nient: si je vous donne le nombre 10, s&rsquo;agit-il du nombre 10 en base d\u00e9cimale (10), celui qu&rsquo;on est habitu\u00e9 \u00e0 rencontrer, ou bien alors du nombre en base binaire, qui vaut 2 en base d\u00e9cimale? Pour pallier \u00e0 ce probl\u00e8me, plusieurs notations sont utilis\u00e9es. On fait parfois suivre le nombre d&rsquo;un caract\u00e8re exprimant la base:<\/p>\n<p><code><br \/>\nb pour la base 2  (binaire)<br \/>\no pour la base 8  (octale)<br \/>\nd pour la base 10 (d\u00e9cimale)<br \/>\nh pour la base 16 (hexad\u00e9cimale)<br \/>\n<\/code><\/p>\n<p>Notre 10 sera donc \u00e9crit en base d\u00e9cimale sous la forme 10d, et 10b sera sa forme finaire. Un autre notation est de placer le nombre entre parenth\u00e8se et de sp\u00e9cifier la dimension de la base en indice. En aura ainsi (10)<inf>2<\/inf> et (10)<inf>10<\/inf>.<\/p>\n<h2>Conversion binaire -> d\u00e9cimal<\/h2>\n<p>Nous avons traditionnellement appris \u00e0 compter en base 10, c&rsquo;est \u00e0 dire que les nombres que nous manipulons sont constitu\u00e9s de 10 chiffres allant de 0 \u00e0 9. Le binaire est une base 2, et les nombres que nous manipuleront seront constitu\u00e9s de 2 chiffres, le 0 et le 1. Avant d&rsquo;expliquer les conversions binaire->d\u00e9cimal (base 2 -> base 10), je vais quand m\u00eame vous faire remarquer quelque chose. Prenons un nombre quelconque, mettons 1429, en base 10. Ce nombre peut-\u00eatre d\u00e9compos\u00e9 de la mani\u00e8re suivante:<\/p>\n<p>1429 = 1000 + 400 + 20 + 9 = 1*10<sup>3<\/sup> + 4*10<sup>2<\/sup> + 2*10<sup>1<\/sup> + 9*10<sup>0<\/sup><\/p>\n<p>Un nombre peut donc \u00eatre d\u00e9compos\u00e9 sous la forme de la somme de chacun des chiffres qui le composent, multipli\u00e9s par la dimension de la base \u00e0 l&rsquo;exposant de leur rang. Cette m\u00e9thode n&rsquo;est pas valable uniquement pour les nombres d\u00e9cimaux. J&rsquo;arrive donc \u00e0 mon syst\u00e8me binaire, avec un autre nombre pris au hasard.<\/p>\n<p><code><br \/>\n01011010<br \/>\n<\/code><\/p>\n<p>La premi\u00e8re chose \u00e0 faire est de num\u00e9roter les bits comme nous l&rsquo;avons vu un peu plus haut.<\/p>\n<p><code><br \/>\n0 1 0 1 1 0 1 0<br \/>\n7 6 5 4 3 2 1 0<br \/>\n<\/code><\/p>\n<p>Et maintenant appliquons la formule trouv\u00e9e:<\/p>\n<p><code><br \/>\n 01011010 = 1*2^1 + 1*2^3 + 1*2^4 + 1*2^6<br \/>\n             = 2    + 8    + 16   + 64<br \/>\n             = 90<br \/>\n<\/code><\/p>\n<p>90 est donc l&rsquo;\u00e9quivalent de 01011010 en base 10.<\/p>\n<p><strong><em><br \/>\nConversion d\u00e9cimal->binaire<\/strong><\/em><\/p>\n<p>La, c&rsquo;est un peu plus ennuyeux. En fait il faut diviser le nombre d\u00e9cimal en somme de puissances de 2. Par exemple, 149 peut s&rsquo;\u00e9crire 128 + 16 +4 + 1. Il n&rsquo;y a pas vraiment de secret&#8230; les puissances de 2 c&rsquo;est bien pratique de les savoir par coeur. Retenez quelques valeurs cl\u00e9s, par exemple 2<sup>8<\/sup> = 256, 2<sup>16<\/sup>=65536. Vous retrouverez les autres en divisant ou en multipliant par 2, c&rsquo;est plus pratique que de passer par 20 si on cherche 29.<\/p>\n<p>Bon je vais quand m\u00eame essayer de d\u00e9tailler comment je trouve ma d\u00e9composition. La puissance de 2 imm\u00e9diatement inf\u00e9rieure \u00e0 149, c&rsquo;est 128 (-> 2<sup>7<\/sup>). On aura donc 149 = 128 + quelquechose. On regarde maintenant la puissance de 2 directement inf\u00e9rieure \u00e0 128, soit 64. On remarque que si on additionne 128 et 64, on d\u00e9passe notre 149, on n&rsquo;aura donc pas de 64 dans notre d\u00e9composition. On cherche donc la puissance de 2 encore imm\u00e9diatement inf\u00e9rieure, 32, pareil, donc pas de 32. On arrive ensuite \u00e0 16, l\u00e0 128 + 16 = 144 < 149, on rajoute donc 16 \u00e0 notre somme. Bon, l\u00e0 le reste c'est pareil, enfin l\u00e0 on n'a plus qu'une diff\u00e9rence de 5, j'esp\u00e8re que vous savez \u00e9crire 5 = 4 + 1 :).\n\n\n\n<h2>L&rsquo;hexad\u00e9cimal<\/h2>\n<p>C&rsquo;est d&rsquo;ordinaire une base qui semble un peu compliqu\u00e9e. En effet, sa dimension est de 16, c&rsquo;est \u00e0 dire qu&rsquo;il faut 16 chiffres diff\u00e9rents pour former un nombre. Et comme notre bon vieux alphabet latin ne nous donne que dix chiffres (il nous en manque donc 6), et bien au lieu de cr\u00e9er 6 nouveaux chiffres on a d\u00e9cid\u00e9 d&rsquo;utiliser les lettres. Les chiffres composant le syst\u00e8me hexad\u00e9cimals ont donc 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.<\/p>\n<p>Mais pourquoi avoir cr\u00e9\u00e9 un syst\u00e8me hexad\u00e9cimal me direz vous? Et bien le binaire, c&rsquo;est bien sympathique, mais \u00e0 partir du moment o\u00f9 on commence \u00e0 travailler sur des nombres relativement important, les chaines de 0 et de 1 commencent par ne plus en finir. Le syst\u00e8me hexad\u00e9cimal permet de coder des nombres importants avec tr\u00e8s peu de caract\u00e8res (4 chiffres suffisent \u00e0 coder 65536 \u00e9tats diff\u00e9rents!), et de plus comme nous allons le voir par la suite les conversions binaire->hexad\u00e9cimal et hexad\u00e9cimal->binaire sont particuli\u00e8rement ais\u00e9es.<\/p>\n<h2>Conversion hexad\u00e9cimal -> d\u00e9cimal<\/h2>\n<p>Il faut utiliser la m\u00eame m\u00e9thode que pour la conversion binaire->d\u00e9cimal. Je prendra donc juste un rapide exemple:<\/p>\n<p><code><br \/>\n229A = 2*16^3 + 2*16^2 + 9*16^1 + 10*16^0<br \/>\n         = 2*4096 + 2*256  + 9*16   + 10<br \/>\n         = 8192   + 512    + 144    + 10<br \/>\n         = 8860<br \/>\n<\/code><\/p>\n<h2>Conversion d\u00e9cimal -> hexad\u00e9cimal<\/h2>\n<p>Idem que pour le d\u00e9cimal->binaire, sauf que maintenant il faut d\u00e9composer notre nombre en puissance de 16. C&rsquo;est tr\u00e8s chiant, mais attention, \u00e0 la base l&rsquo;hexad\u00e9cimal c&rsquo;est pas trop fait pour ca&#8230; Enfin voici quand m\u00eame un exemple, mettons 110. 110 c&rsquo;est 6*16 + 14. Or en hexa, 14 se repr\u00e9sente par E. Notre nombre hexad\u00e9cimal sera donc 6E.<\/p>\n<h2>Conversion hexad\u00e9cimal -> binaire<\/h2>\n<p>Noon, ne partez pas \ud83d\ude42 En fait justement c&rsquo;est pas compliqu\u00e9. La mauvaise m\u00e9thode serait de convertir d&rsquo;abord de hexad\u00e9cimal en d\u00e9cimal, puis de d\u00e9cimal en binaire. C&rsquo;est possible, mais ca ferait pas mal d&rsquo;op\u00e9rations assez compliqu\u00e9es. Ce qu&rsquo;il faut savoir c&rsquo;est que un chiffre hexad\u00e9cimal correspond \u00e0 4 bits. Il suffit de convertir un \u00e0 un chaque chiffre hexad\u00e9cimal en binaire et de les mettre les un \u00e0 la suite des autres.<\/p>\n<p>Par exemple notre 6E ci dessus, 6h = 0110b, et Eh = 14d = 1110b. 6E donnera donc en binaire 01101110. C&rsquo;est pas plus compliqu\u00e9 que cela \ud83d\ude42<\/p>\n<h2>Conversion binaire->hexad\u00e9cimal<\/h2>\n<p>La non plus, c&rsquo;est pas bien dur. Prenons un mot: 0011011100101101b. Voyons voir combien cela fait en hexad\u00e9cimal. La premi\u00e8re chose \u00e0 faire est de diviser ce mot en sections de 4 bits chacune -> 1011 0111 0010 1101. Maintenant pour chaque groupe de 4 bits (nibble en anglais) on va associer le chiffre hexad\u00e9cimal correspondant.<\/p>\n<p><code><br \/>\n 0011b = 3d  = 3h<br \/>\n 0111b = 7d  = 7h<br \/>\n 0010b = 2d  = 2h<br \/>\n 1101b = 13d = Dh<br \/>\n<\/code><\/p>\n<p> Notre mot 0011011100101101 en binaire vaut donc 372D en hexad\u00e9cimal :).<\/p>\n<h2>L&rsquo;octal<\/h2>\n<p>L&rsquo;octal est une base 8, compos\u00e9e des chiffres allant de 0 \u00e0 7. Je ne d\u00e9taillerai pas les calculs ici, \u00e9tant donn\u00e9 que cette base est tr\u00e8s rarement utilis\u00e9e (pour \u00eatre franc je n&rsquo;ai jamais eu \u00e0 y faire appel) et que de plus les conversions se font de la m\u00eame mani\u00e8re que les autres.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Comme vous avez surement d\u00fb d\u00e9j\u00e0 en entendre parler, l&rsquo;unit\u00e9 fondamentale en informatique est le bit. Un bit est une entit\u00e9 qui peut prendre uniquement deux valeurs: 0 ou 1. Cela correspond plus physiquement \u00e0 un \u00e9tat \u00e9lectrique, nul pour 0 ou non-nul pour 1. Or un bit n&rsquo;est pas suffisant pour coder tout [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-22","post","type-post","status-publish","format-standard","hentry","category-informatique"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=\/wp\/v2\/posts\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22"}],"version-history":[{"count":0,"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=\/wp\/v2\/posts\/22\/revisions"}],"wp:attachment":[{"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fredptitgars.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}