Coder en Binaire-Representation Des Entiers Positifs

You might also like

You are on page 1of 6
Représentation binaire des entiers positifs = Introduction : analogie avec la base 10 Nous utllsons tous les jours la base 10 pour compter, est la base décimale. Par exemple, le nombre 4097 représente 4 millers, 0 contain, 9 dizaines et 7 unites 4097 = 4 x 1000 + 0 x 100-49 x 10-47 x Leest-i-dice :4097 = 4 x 10° +0 x 107 +9 x 10! +7 x 10° (On retrouve les chiffres 4,0,9 et 7 dans cette écriture avec des puissances de 10. On peut schématiser cola ainsi [Puissances de 10] ..]10°]10°]10* 10°] 10°[10" 10° chithes, x|x|x]sfolol7 En base 10, chaque chiffre peut prendre 10 valeurs: de 0.38 ‘Comment ajouter 1 en base 10? Vous le faites intutivement, mais analysons ce qui se passe avec les chiffres de la représentation décimale. I faudra faire exactement lameéme chose on base 2. Cn regarde le chife des unites stint pas au maximum (#£ 9} on ajoute lu ajoute 1 ;slest au maximum, on la met a 2éraat on regarde sion peut ajouter 1 au chiffre des dizaines, et ainsi de suite, Voyons quelques exemples pour fixer les ides + Onveut ajouter 1227: comme le chitfre des unités vaut 7 (# 9} on lui ajoute directement 1.On obtient cone 28, + Onveut ajouter 1.29: comme le chitfre des unités est & sa valeur maximal, on le met # Det on regarde le chitfre des dizaines il vest pas asa valeur maximale, on peut donc lui ajouter L On obtient done 30. + Onveut ajouter 12.99: comme le chiffre des unités vaut 9 on le met 8 et on passe au chiffre des dizaines,celui-civaut aussi 9 donc on le met aussi a O et on passe au chiffre des centaines; celui vaut O donc on peut lui ajouter L.On obtient done 100, = Codage en base 2 Toute machine informatique, en raison de son architecture (ef. Thame 5, chapitres Tet 2}, ne manipule que des données exprimées Cen langage binaire, dans lequel tous les "mots" s'écrivent uniquement avec des 0 et des Définitions “+ Lunité de base du langage binaire s'appelle le bit (contraction de binary digit soit chiffe binalre en anglais). Un bit ne peut donc prendre que deux valeurs distinctes, notées O etl + Une suite de 8 bits est appelée un octet (exemple: 10010101 est un octet) Dans la suite, on va voir comment on peut représenter un entier postif uniquement avec des 0 et des 1. 2. Combien de valeurs peut-on coder sur bit? 2. Combien de valeurs peut-on coder sur 2 bits ? ‘3. Combien de valeurs peut-on coder sur 3 bits ? 4. Combien de valeurs peut-on coder sur m bits? 1. Quelle est la valeur maximale que lon peut coder sur bits ? 2. Compléter le tableau ci-dessous avec Iécriture binaire de chaque entier Pour cela, sutfit dajouter 1 exactement de la méme maniére que ce qui a été vu un peu plus haut pour la base 10, Nombre Nombreen | cation décimat binaire ° ° [0 se code Oen Binaire 1 1 [ona ajoute Tau premier Bit 2 70 Te premier bit a atteint sa valeur maximale :on le passe 8 0 et on ajoute 1au bit suivant 3 7 fon a ajouté Tau premier Bit les premier et second bits ont atteint eur valeur maximale on les passe & 0 et on ajoute 1 au 4 00 pr second bits ont atteint passe @ O et on ajout bitsuivant 5 6 7 8 9 70 Tout cela est un peu pénible, ¢t heureusement que je ne vous al pas demandé de convertir 2022 en binaire..tlya bien lentendu une méthede pour convert un nomore décimal en binaire, Algorithme de conversion en binaire par suite de divisions En divisant le nombre par 2, on obtient comme premier reste, le nombre diunités. Sion recornmence, on obtient les chiffres suivants de Hécriture en base 2. On s'arréte lorsque le quotient vaut 0. Exemple : conversion de 42 en base 2 ‘Méthode 1: divisions suecessives par 2 (en ligne) 2=2x2+0 M1 =2x1041 10=2x5+1 x240 x14 x0+0 (On oblient ls valeur binalre en concaténant les restes obtenus du dernier au premier :42 = (101010). Méthode 2: divisions suecessives par 2 (divisions posées) 42 (On obliant la valeur binalre en concaténant les restes obtenus du dernier au premier :42 = (101010) Méthode 3 : Somme de pulssances de 2 Les puissances de 2 sont 1,2, 4, 8,16, 32, 64, 128, 256, $12,102, 2048, ote. On peut trouver Ia plus grande puissance de ? inférioure ou égale au nombre décimal 8 convertir. La plus grande puissance de ? inférieure ou égale & 42 est 32. Il manque alors 10 pout faire 42, «donc on recommence avec 10 en cherchant a plus grande puissance de 2 inérieure ou égale 810, etc 42 = 32+ (10) = 824+8+(2) 324842 42842! 1x BHO M+ 1x 2% +Ox +1 x +0x I Done 42 101010). En Python, (On peut caleuler Hécriture en binaite d'un entier avee la fonction Python bin() >>> bin(42) “eo1e1e18" Convertisse2 (2 la main) en base 2les nombres décimaux suivants 63, 257, 2028. Vous pourrez verifier vos résultats avec Python. Conversion binaire — décimale La conversion binaire vers décimale est plus simple. De la mame maniére que les chiffes de lécriture décimale représentent des pulssances de10, les chitfres de fécriture binaire représontont des puissances de 2 Prenons fexemple du nombre binaire 11010111: Puissances de 2]2]2°|2*[2*]2°]2?|2![2° cries |a[1fo[r fof fafa Ainsi, pour conwertir (11010111)3 en décimal, on multiplie le premier chifre eelul de droite) par 2°, le second par 2}, le troisiome par 23. ete. On caleule ensuite la somme de ces valeurs pour obtenir le nombre en décimal on obtient: (1101011)» = 12° 41x28 1x2 OKT LIE O KHL ELIT cesva-dire (11010111), = 1424440416 40-4 644 128 = 218. @Q _~or:07 a bien commencer ar le chifre des unites! En Python (On peut utiliser la fonction Aint) pour convertir un nombre binaite en décimal >> int("11010111', 2) # le ‘2° pour indiquer que 1a chaine est en base 2 25 (On peut aussi directement saisir un nombre en binaire en préfixant son écriture par @b de> obizere112 25 Convertissez en décimal les nombres binares suivants: (11011) et (1100011011), Vous pourree vier vos résultats avee Python Dans les exercices, on écriva les algorithmes de conversion entre base 10 et base 2, On verra également comment additionner ou multiplier deux nombres binaires. = Codage en base 16 Cette base est appelée base hexadéelmale (hexa = 6 + décimale =10). Nous allons passer plus rapidement cette partie car les, méthodes restent les mémes quiavec la base 2. + Enbbase 10: chaque chiffre peut étte codé par 10 valeurs (0,1,2,3, 4,5 6,7, 8,9) + Enbase 2: chaque chiffre peut étre codé par2 valeurs (0,1), + Enbase 16: sans surprise, chaque chifte peut étre codé par 16 valeurs (0,1,2,,4,5, 6,7, 8,9)... et apres 2). Apres le 9, on va Utilser les letres de alphabet pour arriver 816 valeurs en te Ainsi,on baso 16, chaque “chiffre' est codé par :0, 1,2,8,4,8,6,7,8,9, A, B,C, D, B, F avec la correspondance suivante: [Base 10] Base 16 [Base 2 0 o | o 1 7 1 2 0 3 s [on 4 4 | 100 5 | 0 6 6 | 10 7 7 | @ | 1000 9 9 | 1001 0 | a | iw 7 a [ton 2 | c | noo w | 2 | m0 4 |e | mo w [oe foam Pourquoi la base 16 ? Lavantage de la base 16 réside dans sa facilté de conversion de et vers Ia base 2, Un chiffre en base 16 remplace 4 bits (c base 2) Elle est done un compromis entre le code binaite des machines et une base de numération pratique & utiliser pour les ingenieurs. ifresen hexadecimal a 6t6 utilisé la premiere fois en 1956 par les ingénieurs de ordinateur Bendix C- 15, Pour plus d'informations sure systéme hexadécimal Systame hoxadécimal - Wikinadia, Conversion en hexadécimal Lalgorithme est exac' ment le méme que pour la conversion en binaire. I suffit juste de diviser successivement par 16 et non par 2 Exemple : conversion de 215 en base 16 Méthode 1 218-16 x 15+7 1516 X0+15 (+B) (On obtient fa valeur hexadécimale en concaténant les restes obtenus du dernier au premier :215 = Méthode 2 215 [16 7/1316 Kaa fo (On obtient la valeur hexadécimale en concaténant les testes obtenus du dernier au premier :215 = (DT)is La troisi¢eme méthode est possible mais est beaucoup moins adaptée car il faut connaitre les puissances de 16 En Python, (On peut caleuter ture en binaire d'un entier avec la fonction Python hex() >>> hex(215) oxa7* Pourquoi la base 16? (bis) Grice au tableau ci-dessus,on sit que (D)ye = (1101)2 et que (7)1s = (0111)2 donc on peut convertr tras rapidement (D7)as en base 2: (11010111)2, Réciproquement sion connait un nombre binaire (11000011), cn convert les bits par blocs de 4(1100)2 = (Cis et (0011)2 = (8)as et on a trés rapidement : (11000011): = (C3)is Conversion hexadécimale — décimale Le principe est le méme que la conversion binaire vers décimale, plut6t qu'un long discours, un exemple Exempt ‘conversion de (48),4 en base 10: Puissances de 16] 16°| 16" 16°| chires [4 [ele Done: (AB) ig = 8 x 10° + Bx 164+ 4 x 16? = 8x 1+ 14 x 16-44 x 256 = 8 + 224 + 1024 = 1256. En Python (On peut utiliser la fonction int) pour convertir une valeur hexadécimale en décimal >»> int("4e8", 16) # on précise bien que 1a base d'origine est 1a base 16 1256 (On peut aussi directement sais un nombre en hexadécimal en préfixant son éer >>> @xdes 1256 1. Convertssez 457 en base. 2. Convertssez (876);9 en base. = Ecriture d'un entier positif dans une base b > 2 quelconque Généralisation Dans une base b > 2 quelconque, on procéde exactement de ls méme fagon mais avec des pulssances de b! Exempl Seriture de Ventier 38 en base S BB= 1x57 42x43 x 5 Le nombre 38 s'écrt done (128)s en base 5 Ecriture d'un entier positif dans une base b> 2: Soit = ay x Bb aga x BL. hag x BP par x BE ay x 8, Co les as sont des chitfres entre 0 et b— Dans ce cas, dndy-t---dgayag est lcriture en base bde x On note cela B= (Qn yt. 420i6)o-

You might also like