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.
.1280137%*w4h)1(+5-,_s3u:/S[ bqn=ve08imtP]69p2drgylckfao050O0C0H0W0F0S0p0w0T0S0W0p0p0A010H0F0M010406050p0r0G0G0W0P0R040u0X0S0r0=0X0z050t0|0~10120`0M04051i1b1l0t1i0`0O0F0B0*0,0.0:0,0z0Q0r0W0Q0C0m0M0R0H0g190w0g0F0Q0g0S1N0g0H0^050#0x0S0C1u0-0/011M1O1Q1O0H1W1Y1U0H0P1j1I0*150p0M0W0z0:0N011!1w010V0%0C0z0W0G0C1U1_1{201$231Y26280^0a0w0I0P0X0M0X0p0F180z0w0Z1@0P0P0C0T2t1b2b0z1j0t1I2G1:1=1;1V0O2d1x0F0z252q1U1r1t0+1#2Q2S0z0X2W1U0M2z1j2E2G2-0{1`2u2Y212$0P0 0S1U0W1L2z0V0:030o0o0T2%0C1Q2#0X0m0N0m0i0^0w0i1b0W2.2;0_2:2c2?1$2^2`2|2~0C3001323436382T3b3b3f0N3i3k1{3m2E2P013r0W2{1j2}0g2 3133350Z3B2$3D0q3f0q3H2D3l0`3L3p0:3O3Q053S3U3x3W3A2R3C3c0f3f0f3)1c3+3n2=1v3q0X2_3P3t3T3v3V3z3Y3{3!3c0l3f0l412-3,2;3M3:4b3@3y3X374h3a3c0K3f0K4n433-463/483s3R3u3w4v3`393D0b3f0b4E3J4p3o4H3N4J4a4L4c4N3_4g4Q3c0E3f0E4V2F4X452Z4!493;3?4d3^4f4x4,0m0L3f0L4;3K4q3.4_4K3=4M4e4w3Z4z3d0D0^0i0D564?4r4#4{5d4~5f4y3D0i3e045x5n445p4`4t4}4O4+3|3d1~5z3G0t3j3*4W5C594s4%4u4*505J0i3$5z3(5O3I4=5S4Z5U5c4(5e4P5Z3~5z405(5Q5*4G4^5-4|4)4 5g5w4k5z4m5_425R5|2@5q5F605u510i4B5z4D674o5+5}6c5V5G5X623c0i4S5z4U6l4F585,6p5.5W615v6u4.5z4:6z696B6o5E6q6e5;4i3d535z556M2F1m2+1b2W2J0O1=2O594w2V1s1j2*0C2,3l5`1j4w6@2c0F0O0:332E5w3t6~706G6g1 2h0C766f5Z1U5_6a1$0U0^0Z0V6_6n210e3f7n7h3/0V7k2A0o0H0X0o0x2R7s6O210@040j7E4Y5}0^0z0x0o0Z0T7K4@7G0^0h0s6_0`686!3L7501712;3D5L5c7(6s6H3E0w7a7c6T5h7-5(0w7}0w7o3q0^0y7T3M7H0n6_7 7t3N0^0P88800:0X0^0A8e8a0z7N7P7R8k7F1$8h040t0t8q7L210G0F0^5N2/8a868x7U81047O7Q2A8H3M8t0c8O598A8C7Z847/0o723c5#7.6 7)775J3$7?277b8)7d6U8$7|7~8f017j040F7m7#04898r3/828S4Z8t0A8j8 918y1$8U045m8 8_7H7Y9a7!8E4q8Y8!0m5?8%7^5I6U3~8-289u5Y9w7f3j7~9F9b8I0:8{2z0H0r0P1a9a8_7O0^0p1:84597H7J9h8l8c9W4Z7H0h889m6^7%8(7*1{3D649t8:7_9=798.9A6t0m9?8@7}8_8{370p0C9%4^9j8W9!9o9/8Z7+4A74ae8;5h4B9y8/7:516i3H9G8^8a9K0!9N9P2-9H4r7w0T7y7A7Caz9-92019Ya82@94ac9c0:9)954^8t0kaU2@0x9T9VaQ9IaL0^9Z9naR8b048da%857W9+8Xae9q6w9@ap5J4San9}7;a{5(9,3J5C9pag0m6Ja|8*6U4.b09^9v5hbb7gaK8{7laN1$7q90bp7u0^aHaF8M7Sa;9Xa*bta.8LaHbD9)9k6ma;b89;3c6Wbcak3D53bga}6UbPa1aB598{8}aY3qa!042gbHbCbA5,8n7B7Db.a9a?9Q8a9799aA8_9e3hb?7V04bJ43bLa_b95laib16g5jbUbd5hc92G9EatbZ4Zb#8~b}9#8K7PbGb_aKb{b%0:0p5y000D00b,c3a@c6769q5xcabh9Bcg3ecebR6u5yasck9Fa38cax9Ocx019e9gbKa,2ubM0z5w7-2}8YcR5K9{9zcM9~0i7{cjatcX04a5a7c11$aa8 b57$adcIc88$c:aj9_6u8,7@c_7;5!9D90cVaubmcY9Mc!cua-b cGc*0wc,5w9sddcb5=c@aocfdBdmcWav0^d1cEc45RcH8)cJ9?dDdj6g4kcQdf3da0c}9Gc b$dua(8mcrb;aIb68F0^0vbD8t0mbDdwd3aS0^0Jc#cwd,3Mcz0^cBcDd~a)cFd6a^dabN3dardWbVcgamdiek5warbYcV9Rbv2s7Q2n2se28ic#c%abdydA6ua{ejdIeGdGdE6U6vdKckc dOead5c)aJ6}c7eg0ibbeIc=e!eLdX5Zbkd(escq7C0Hew0Xeye45997eB8B5zeDeWc+eYc-6ubPe$d#0ibTeneJ6VePc~dMa/cZd;2Fcl4^9e8D3lfj218t0dc#d.bw7zbycEa+e aCd/ctdybB040vdQd8a-d`d|e|c0fD9(e09*e^960^aXfS7M04e:e=e@eVb60t6{6#6?6%6:1b0H6*f.2M2H0W1Xf+0t6(7!0Z0#0%0p04.
# Tests(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)