Conversion récursive binaire/décimal et décimal/binaire
L’objectif de cet exercice est d’écrire deux fonctions récursives dec_to_bin
et
bin_to_dec
assurant respectivement la conversion de l’écriture décimale d’un nombre
entier vers son écriture en binaire et, réciproquement, la conversion de l’écriture en
binaire d’un nombre vers son écriture décimale.
Dans cet exercice, on s’interdit l’usage des fonctions Python bin
et int
.
L’exemple ci-dessous montre comment obtenir en binaire l’écriture en binaire du
nombre 25 :
\(25 = 2 \times 12 + 1\)
\(\phantom{25} = 2 \times(2 \times 6 + 0)+1\)
\(\phantom{25} = 2 \times (2 \times(2 \times 3+0)+0)+1\)
\(\phantom{25} = 2 \times (2 \times(2 \times(2 \times 1+1)+0)+0)+1\)
\(\phantom{25} = 2 \times (2 \times(2 \times(2\times(2 \times 0+1)+ 1)+0)+0)+1\)
\(\phantom{25} = 1 \times 2^4 + 1 \times 2^3 + 0 \times 2^2 + 0 \times 2^1 + 1 \times 2^0\)
L'Ă©criture binaire de 25 est donc 11001
.
0n rappelle Ă©galement que :
a // 2
calcule le quotient de la division euclidienne de a
par 2.
a % 2
calcule le reste dans la division euclidienne de a
par 2.
On indique enfin qu’en Python si mot = "informatique"
alors :
mot[-1]
vaut 'e'
, c’est-à -dire le dernier caractère de la chaîne de caractères mot
.
mot[:-1]
vaut 'informatiqu'
, c’est-à -dire l’ensemble de la chaîne de
caractères mot
privée de son dernier caractère.
Compléter, puis tester, les codes de deux fonctions ci-dessous.
On précise que la fonction récursive dec_to_bin
prend en paramètre un nombre entier
et renvoie une chaîne de caractères contenant l’écriture en binaire du nombre passé en
paramètre.
Exemple :
>>> dec_to_bin(25)
'11001'
La fonction récursive bin_to_dec
prend en paramètre une chaîne de caractères représentant l’écriture d’un nombre en binaire et renvoie l’écriture décimale de ce nombre.
>>> bin_to_dec('101010')
42
Compléter ci-dessous
Compléter, puis tester, les codes de deux fonctions ci-dessous.
.128013l(9 _4:;=vm26-uS8ws*3%/]+fr7gebh[pPic05qa,onkyd1)t050V0E0Y0P0K0b0t0e0L0b0P0t0t0j010Y0K0I010406050t0p0l0l0P0B0U040q0R0b0p0?0R0S050x0}0 11130{0I04051j1c1m0x1j0{0V0K0k0+0-0/0;0-0S0D0p0P0D0E0o0I0U0Y0G1a0e0G0K0D0G0b1O0G0Y0_050$0F0b0E1v0.0:011N1P1R1P0Y1X1Z1V0Y0B1k1J0+160t0I0P0S0;0m011#1x010A0(0E0S0P0l0E1V1`1|211%241Z27290_0a0e0J0B0R0I0R0t0K190S0e0!1^0B0B0E0L2u1c2c0S1k0x1J2H1;1?1=1W0V2e1y0K0S262r1V1s1u0,1$2R2T0S0R2X1V0I2A1k2F2H2.0|1{2v2Z222%0B100b1V0P1M2A0A0;030f0f0L2(0E1R2$0R0o0m0o0W0_0e0W1c0P2/2=0`2;2d2@1%2_2{2}2 0E3101333537392U3c3c3g0m3j3l1|3n2F2Q013s0P2|1k2~0G303234360!3C2%3E0v3g0v3I2E3m0{3M3q0;3P3R053T3V3y3X3B2S3D3d0g3g0g3*1d3,3o2?1w3r0R2`3Q3u3U3w3W3A3Z3|3#3d0N3g0N422.3-2=3N3;4c3^3z3Y384i3b3d0n3g0n4o443.473:493t3S3v3x4w3{3a3E0C3g0C4F3K4q3p4I3O4K4b4M4d4O3`4h4R3d0r3g0r4W2G4Y462!4#4a3=3@4e3_4g4y4-0o0d3g0d4=3L4r3/4`4L3?4N4f4x3!4A3e0M0_0W0M574@4s4$4|5e4 5g4z3E0W3f045y5o455q4{4u4~4P4,3}3e1 5A3H0x3k3+4X5D5a4t4(4v4+515K0W3%5A3)5P3J4?5T4!5V5d4)5f4Q5!3 5A415)5R5+4H4_5.4}4*505h5x4l5A4n5`435S5}2^5r5G615v520W4C5A4E684p5,5~6d5W5H5Y633d0W4T5A4V6m4G595-6q5/5X625w6v4/5A4;6A6a6C6p5F6r6f5=4j3e545A566N2G1n2,1c2X2K0V1?2P5a4x2W1t1k2+0E2-3m5{1k4x6^2d0K0V0;342F5x3u6 716H6h202i0E776g5!1V5`6b1%0T0_0!0A6`6o220s3g7o7i3:0A7l2B0f0Y0R0f0F2S7t6P220^040c7F4Z5~0_0S0F0f0!0L7L4^7H0_0X0h6`0{696#3M7601722=3E5M5d7)6t6I3F0e7b7d6U5i7.5)0e7~0e7p3r0_0O7U3N7I0Q6`807u3O0_0B89810;0R0_0j8f8b0S7O7Q7S8l7G1%8i040x0x8r7M220l0K0_5O2:8b878y7V82047P7R2B8I3N8u0w8P5a8B8D7!857:0f733d5$7/707*785K3%7@287c8*7e6V8%7}7 8g017k040K7n7$048a8s3:838T4!8u0j8k90928z1%8V045n908`7I7Z9b7#8F4r8Z8#0o5@8(7_5J6V3 8.299v5Z9x7g3k7 9G9c8J0;8|2A0Y0p0B1b9b8`7P0_0t1;855a7I7K9i8m8d9X4!7I0X899n6_7(8)7+1|3E659u8;7`9?7a8/9B6u0o9@8^7~8`8|380t0E9(4_9k8X9#9p9:8!7,4B75af8=5i4C9z8:7;526j3I9H8_8b9L0#9O9Q2.9I4s7x0L7z7B7DaA9.93019Za92^95ad9d0;9*964_8u0zaV2^0F9U9WaR9JaM0_9!9oaS8c048ea(867X9,8Yaf9r6x9^aq5K4Tao9~7=a|5)9-3K5D9qah0o6Ka}8+6V4/b19_9w5ibc7haL8|7maO1%7r91bq7v0_aIaG8N7Ta=9Ya+bua/8MaIbE9*9l6na=b99=3d6Xbdal3E54bha~6VbQa2aC5a8|8~aZ3ra#042hbIbDbB5-8o7C7Eb/aaa@9R8b989aaB8`9f3ib@7W04bK44bMa`ba5majb26h5kbVbe5ica2H9Faub!4!b$8 b~9$8L7QbHb`aLb|b(0;0t5z02030v0d0i0McCcE0ib-c4a^c7779r5ycbbi9Cch3fcfbS6v5zatcl9Ga48day9Pcy019f9hbLa-2vbN0S5x7.2~8ZcY5L9|9AcT9 0W7|ckauc(04a6a8c21%ab90b67%aecPc98%c`ak9`6v8-7^d07=5#9E91c$avbnc)9Nc+cva.c0cNc;0ec?5x9tdkcc5?c~apcgdIdtc%aw0_d8cLc55ScO8*cQ9@dKdq6h4lcXdm3ea1d49Hd6b%dBa)8ncsb=aJb78G0_0HbE8u0obEdDdaaT0_0yc,cxd?3NcA0_cIcFcHcDcFdWacdFdH6vasd%bWchandper5xasbZc$9Sbw2t7R2o2te98jc,c.elaK6~c8bO3ea|eqdP6vb0eueSePdRcld6dVe5a*cMdda_dheO0WbceRc|e-dNdL6Ve;cjdudvcm7N047D0YeD0ReFeb5a98eI8C5AeKd|dgd!c9bQe/d,0WbUeVe:bYd/dSdxa:c*d{2Ge|8Af88E3mfu8t0_0uc,d^bx7AbzcLa,eLd@b;cudFbC040HdXdfa.e1e3f8c1fO9)e79+f4970_aYf%e}e f1f3c:6_0x6|6$6@6(6;1c0Y6+f{2N2I0P1Yf^0x6)7#0!0$0(0t04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)