Transcription of Représentation des nombres - e Math
1 Repr sentation des nombresVid o partie 1. Repr sentation des nombres entiers en base2 Vid o partie 2. Le binaire en PythonVid o partie 3. Les bases8et16 Objectifs Savoir ce que sont les repr sentations de nombres entiers en base 2, 8 et 16. Savoir convertir un nombre entier dans l une de ces bases. Savoir calculer l entier connaissant sa repr sentation dans l une de ces bases. Conna tre les fonctions dePythonpermettant ces conversions. Savoir les Repr sentation des nombres entiers en MotivationL histoire r v le que selon les poques et les lieux, l criture des nombres s est effectu e de plusieurs fa ons. Parexemple, le nombre quarante-sept peut s crire : avec des petits traits : ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| || ; avec la num ration romaine :XLVII; avec la num ration de position en utilisant les 10 chiffres arabes syst me d criture des nombres se d crit toujours en pr cisant les symboles utilis s (l alphabet) et les r glesd association de ces dans notre syst me de num ration d cimale, l alphabet est constitu de dix symboles : les dix chiffres0, 1, 2, 3,4, 5, 6, 7, 8 et 9.
2 L aide de ces dix symboles, on peut crire n importe quel nombre entier. Le nombre quarante-septs crit47en base10ce qui signifie que ce nombre est gal 4 101+7 100. De m me le nombre3010s crit ainsiparce que 3010=3 103+0 102+1 101+0 criture d cimale d un nombre entier est tout simplement une juxtaposition d un nombre fini des dix chiffresd cimaux, tout comme un mot s crit en juxtaposant les lettres de l alphabet latin (si on crit dans une langue utilisantl alphabet latin).L criture d cimale des nombres convient tout fait aux humains, mais moins pour les 1645, Blaise Pascal a construit une machine calculer m canique, la pascaline, dans laquelle les nombre sontrepr sent s en base10. De telles machines ont continu exister jusqu au XX me si cle. Mais les ordinateurs sont desmachines dans lesquelles les engrenages et roues dent es ont laiss la place des transistors : ce sont des machines lectroniques. Les tats des dispositifs l mentaires sont repr sent s par des tensions lectriques.
3 Et il est plus facile dedistinguer deux tats (par exemple5 volts ou0 volts, selon que le courant passe ou pas) que10 tats. On comprendalors que la repr sentation d cimale des nombres n est pas la plus appropri e pour de telles machines. Le binaire avecses deux symboles leur convient SENTATION DES NOMBRES1. REPR SENTATION DES nombres ENTIERS EN BASE22La Pascaline (source Wikipedia) Les puissances de2Si en base10, ce sont les puissances de10(1, 10, 100, 1000,..) qui d terminent l criture d un nombre, en base2, cesont les puissances de 2. La table donne les premi res puissances de criture binaireTout nombre entier admet une unique d composition en somme de puissances de criture binaire d un nombre entier s appuie sur la d composition de cet entier en somme de puissances de2 ce qu il en est pour 47 et +8+4+2+1=25+23+22+21+20=1 25+0 24+1 23+1 22+1 21+1 utilisant les deux chiffres 0 et 1, ce nombre s crit donc en binaire :47= SENTATION DES NOMBRES2. LE BINAIRE ENPython3 Pour 3010 :3010=2048+512+256+128+64+2=1 211+0 210+1 29+1 28+1 27+1 26+0 25+0 24+0 23+0 22+1 21+0 : 3010= les critures binaires des entiers de 0 Bits et octetsLes chiffres binaires0 et 1 sont appel sbits.
4 Ce mot est la contraction de l expression anglaisebinary digit. Les entiersde0 7 sont les huit seuls entiers qui peuvent s crire en binaire avec trois bits seulement (en compl tant par des bitsnuls gauche si n cessaire).Unoctetest un nombre qu on peut crire en binaire sur huit bits. Ce sont les entiers compris entre 0 et 255. Ils sontau nombre de !Le mot anglaisbyted signe ce qu en fran ais on nomme octet. Donc byte6= Mesures de quantit de m moireLongtemps les pr fixeskilo,m ga, .. , appliqu s aux octets pour mesurer des tailles de m moire d signaient despuissances de2. Or pour toute autre mesure dans le syst me international, ces m mes pr fixes d signent des puissancesde10. Une partie de la confusion vient que210=1024est proche de1000. Pour rem dier cela, la commission lectronique internationale (IEC) a sp cifi de nouveaux pr fixes pour les puissances de viationNomPuissanceAbbr viationkilooctet103kokibioctet210 Kiomegaoctet106 Mom bioctet220 Miogigaoctet109 Gogibioctet230 Giot raoctet1012 Tot bioctet240 Tiop taoctet1015 Pop bioctet250 Pio2.
5 Le binaire Le binaire enPythonLa fonctionbindePythondonne une cha ne de caract res repr sentant l criture binaire de l entier pass enparam tre. Voici ce que donne l aide sur cette fonction :>>> help(bin)Help on built-in function bin in module builtins:bin(..) bin(number) -> string Return the binary representation of an SENTATION DES NOMBRES2. LE BINAIRE ENPython4L aide nous informe que cette fonction prend un nombre entier en param tre et renvoie une cha ne de caract resrepr sentant l criture binaire de cet cette fonction nos deux entiers 47 et 3010 :>>> bin(47)'0b101111'>>> bin(3010)'0b101111000010'Nous retrouvons bien l criture obtenue plus haut. noter que la cha ne de caract res d bute par0b, lebmettant en vidence qu il s agit de l criture binaire d un les nombres n gatifs, la repr sentation binaire est tout simplement pr c d e du signe-, comme on peut le voirsur l exemple ci-dessous :>>> bin(-47)'-0b101111'Jusqu pr sent, nous avons crit les nombres entiers comme nous avons l habitude de le faire usuellement : en base10.
6 Mais ceci n est pas une n cessit . EnPythonon peut crire les nombres entiers directement en binaire. Il suffitpour cela de faire pr c der cette criture par0b.>>> 0b1015>>> 0b101 + une utilisation tautologiques de la fonctionbin:>>> bin(0b1011)'0b1011'Vous remarquerez la pr sence des simples guillemets autour de la valeur renvoy e parbinqui montre bien que cettevaleur est une cha ne de caract res (typestr), alors que l argument est un entier (typeint).>>> type(0b110011)<class 'int'>>>> type(bin(0b110011))<class 'str'> Algorithme de calcul de l criture binaire d un entierNous avons vu que l criture binaire d un entier s obtient par la d composition de cet entier en somme de puissancesde2. Mais comment obtenir cette d composition ? Doit-on conna tre toutes les puissances de2, ou bien disposer unetable de ces puissances ? On va voir qu il n en est algorithme simple consiste diviser cet entiernpar deux : on obtient un quotientq1et un rester0compris entre0et 1.
7 Puis on remplace l entiernpar le quotientq1qu on divise par deux pour obtenir un nouveau quotientq2et unnouveau rester1lui aussi compris entre 0 et 1. Et on continue comme cela jusqu obtenir un quotient nulqt=0 etun dernier restert 1. L criture binaire dens obtient en alignant de droite gauche tous les restesr0,r1, ..rt cet algorithme illustr pourn=47. On divisenpar 2, 47=2 23+1, et on obtientq1=23 etr0=1. On diviseq1par 2, 23=2 11+1, et on obtientq2=11 etr1=1. On diviseq2par 2, 11=2 5+1, et on obtientq3=5 etr2=1. On diviseq3par 2, 5=2 2+1, et on obtientq4=2 etr3=1. On diviseq4par 2, 2=2 1+0, et on obtientq5=1 etr4=0. On diviseq5par 2, 1=2 0+1, et on obtientq6=0 etr5= SENTATION DES NOMBRES2. LE BINAIRE ENPython5En six divisions, on arrive un quotient nul. L criture binaire den=47 est donc :47=r5r4r3r2r1r02= algorithme est formalis avec une boucle tant que dans l algorithme de conversion en e :n Nun entier non nulSortie :rt 1rt 2..r1r0 criture binaire denCode 1(en_bin.)
8 Calcul de l criture binaire d un entier naturel non nul). queqi6= +1 qi qi(mod 2) i+ Tant :ri 1ri 2.. peut arr ter l it ration dans l algorithme d s que le dernier quotient calcul est inf rieur 2, car on est alorsassur que le prochain sera nul. On gagne ainsi une Algorithme de calcul d un entier repr sent en binaireInversement, connaissant l criture binaire d un entier, comment calculer la valeur de l entier crit ?Bien s r une solution consiste d velopper le calcul d une somme de puissances de2. Par exemple, avecn=1011112,on aurait calculern=1 25+0 24+1 23+1 22+1 21+1 20=32+8+4+2+1= fa on de proc der n cessite le calcul des puissances de2 cons cutives. Mais, une simple astuce permet de sedispenser du calcul de ces puissances. Reprenons l exemple ci-dessus, et effectuons une succession de factorisations :n=1 25+0 24+1 23+1 22+1 21+1 20=(1 24+0 23+1 22+1 21+1) 2+1=((1 23+0 22+1 21+1) 2+1) 2+1=(((1 22+0 21+1) 2+1) 2+1) 2+1=((((1 2+0) 2+1) 2+1) 2+1) 2+1=47 Dans la derni re ligne, n apparaissent que :1.
9 Les bitsr5r4r3r2r1r0de l criture binaire den,2. des additions et des multiplications par besoin de conna tre les puissances de2. De plus le nombre de multiplications par2 est gal au nombre de bits dendiminu de fa on de calculer l entier correspondant une criture binaire est formalis e dans l algorithme ci-dessous. C estun cas particulier d un algorithme connu sous le nom d algorithme de e :rt 1rt 2..r1r0l criture binaire d un entiernSortie :valeur denCode 2(bin_2_dec. Calcul de l entier correspondant une criture binaire). rt 1(le bit le plus gauchedans l criture binaire) det 2 0 (en d croissant) n 2+ :nREPR SENTATION DES NOMBRES3. LES BASES8ET1663. Les bases8et16 Les critures d cimales et binaires des nombres entiers ne sont pas les seules utilis es. En informatique deux autresbases sont plus ou moins fr quemment employ es : la base 8 utilisant les huit chiffres de0 7; on parle alors d critureoctaledes nombres ; la base16utilisant les dix chiffres usuels de0 9et les six premi res lettres de l alphabet deA F; on parle alorsd criturehexad cimaledes L octalD terminons les critures octales des nombres47et 3010.
10 Pour cela il suffit d crire chacun de ces deux nombrescomme somme de puissances de 8. Une m thode pour le faire est de diviser le nombre crire par la base autant defois que n cessaire. Pour 4747=8 5+75=8 0+ prenant les restes successifs des divisions qui pr c dent, on trouve47=5 81+7 80. D o l criture octalede 47 :47=578. Pour 30103010=8 376+2376=8 47+047=8 5+75=8 0+ prenant les restes successifs des divisions qui pr c dent, on trouve3010=5 83+7 82+0 81+2 o l criture octale de 3010 :3010= nombres de 0 20 en octal00810128118111382281214833813158448 1416855815178668162087781721881081822891 181923820248L analogue de la fonctionbinenPythonpour l octal est la fonctionoct.>>> oct(47)'0o57'>>> oct(3010)'0o5702'>>> oct(-3010)'-0o5702'Comme on peut le constater sur ces quelques exemples, la fonctionoctrenvoie une cha ne de caract res pr fix espar0oou-0oselon le signe pour signifier qu il s agit bien d une criture octale des peut aussi entrer directement des nombres en les crivant en base 8 en les pr fixant du0o:REPR SENTATION DES NOMBRES3.