Aller au contenu

Conversions binaire ↔ décimal⚓︎

Représentation des nombres binaires

Pour cette partie, les nombres binaires seront représentés par des textes xomposés de 0 et de 1, avec le bit de poids fort (celui correspondant à la plus grande puissance de 2) à gauche.

Ainsi \(13_{10}\) sera représenté par "1101" :

\[13_{10} = 8 + 4 + 1 = 1\times 2^3 + 1\times 2^2 + 0\times 2^1 + 1\times2^0 = 1101_2\]

On pourra utiliser les fonctions int qui convertit en entier un texte correspondant à un entier et str qui convertit un objet (ici un nombre) en texte.

>>> int("0")
0
>>> int("1")
1
>>> str(0)
'0'
>>> str(1)
'1'
Conversion de binaire vers décimal

Pour convertir un nombre binaire en base 10, on peut soit additionner les puissances de 2, soit utiliser l'algorithme suivant :

Algorithme de conversion binaire vers décimal
resultat ← 0
Pour tous les chiffres C allant de gauche à droite :
    resultat ← 2 × resultat + C
Renvoyer resultat
Exercice 21 : binaire vers décimal

Écrire le code de la fonction bin_vers_entier qui prend en paramètre un texte correspondant à un nombre binaire et renvoie le nombre en base 10 correspondant.

Exemples
>>> bin_vers_entier("0")
0
>>> bin_vers_entier("1")
1
>>> bin_vers_entier("10")
2
>>> bin_vers_entier("1101")
13

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013a) =f53kb_h+oprSeyivm0wP/*2.d7l"(uns 4c:1gt010v0j0J030l0x0C0D0F0x030C0C060y0J0l0g0y0005010C0A0n0n030h0k000i0f0x0A0!0f0B010r0)0+0-0/0'0v0l0m0D0,0h0a0v0f0p0B0Y0H0y0D0C0J0k0x0j0Y170I0l0B0G0H0u0w0j0n0D0H1w1g0&0K140S0U0W0Y0d0l0I0d0x1K0d0J0%010N0b1l1F0V0X0y1J1L1N1L0J1T1l1R0J0h001S0d0S0=0C0g031d0y0t1g0T1X0Y070P0j0B030n0j1R1;1?1W1H0y1~1l22240%020D0q0h0f0g0f0C0l0^0B0D0L1/0h0h0j0F2q0{270B1,0r0J0d2D1*1,2I1S0v291Y1N0B212n1R13151{2a2P2R2U1R0g2w1,2B2D2'0(1=2r2W1Y0B0f0h0,0x0%0H2A2+1C2B2N0Y2/2;032?000t2_1?2{2+2}0y302=0%09362C0'2|2-2~2:3d000E3g38283k3b3m320%083q0{2$0j2D2U2H0v2J2M3t0F0f0L2T141,3B2&2`3z3K0L3R3s1G1Y0a0%0L073q0D2*3X1|3b070%0b1q0c0m0j0h0C0c210!3=3z3j3Y0Y0$000z3|393t0B0%0B0b0c3.0`0|3S3}3*41040G3q050D4n3'4g2a4700493&3(2,3~0y0f0%064v4q1Y0n0l0%0o4l4o4p454y3!00072:4D4N3*4s0b4T3)2a1b0%1q4Y4x4V484a4c444Z1Y414k4e374m4L4o4w3a4s4u4;2C4M4-0Y4A004C4}00504'2a4G0%35564_3t530s4,592.4)4&3a530e5n460b4$0B0J5j3a41435e4E2~3-5x3t4i4K4^5C0y4P2w0J0A0h4d2'584`5m560'0r3U3C3A2%0{3E0{0J3G5'1+5'031U5!0r3E5X5;5%0M0O0Q00

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013w(g_vr7=pPmcth* n0ioa:edu1k 3)flS42y.bs+5"/010q0p0f0n0l0y0F0i0e0y0n0F0F0a0I0f0l0b0I000u010F0r0d0d0n080C000z0m0y0r0!0m0j010J0)0+0-0/0'0q0l070i0,080t0q0m030j0Y0s0I0i0F0f0C0y0p0Y17050l0j0o0s0D090p0d0i0s1w1g0&0K140S0U0W0Y0g0l050g0y1K0g0f0%010N0E1l1F0V0X0I1J1L1N1L0f1T1l1R0f08001S0g0S0=0F0b0n1d0I0B1g0T1X0Y0x0P0p0j0n0d0p1R1;1?1W1H0I1~1l22240%020i0c080m0b0m0F0l0^0j0i0L1/08080p0e2q0{270j1,0J0f0g2D1*1,2I1S0q291Y1N0j212n1R13151{2a2P2R2U1R0b2w1,2B2D2'0(1=2r2W1Y0j0m080,0y0%0s2A2+1C2B2N0Y2/2;0n2?000B2_1?2{2+2}0I302=0%0v362C0'2|2-2~2:3d000A3g38283k3b3m320%0H3q0{2$0p2D2U2H0q2J2M3t0e0m0L2T141,3B2&2`3z3K0L3R3s1G1Y0t0%0L0x3q0i2*3X1|3b0x0%0E1q06070p080F06210!3=3z3j3Y0Y0$00043|393t0j0%0j0E063.0`0|3S3}3*410w0o3q0u0i4n3'4g2a4700493&3(2,3~0I0m0%0a4v4q1Y0d0l0%0k4l4o4p454y3!000x2:4D4N3*4s0E4T3)2a1b0%1q4Y4x4V484a4c444Z1Y414k4e374m4L4o4w3a4s4u4;2C4M4-0Y4A004C4}00504'2a4G0%35564_3t530h4,592.4)4&3a530G5n460E4$0j0f5j3a41435e4E2~3-5x3t4i4K4^5C0I4P2w0f0r084d2'584`5m560'0J3U3C3A2%0{3E0{0f3G5'1+5'0n1U5!0J3E5X5;5%0M0O0Q00
Conversion de décimal vers binaire

Pour convertir un nombre entier en binaire, il est possible de chercher la plus grande puissance de 2 qu'il est possible d'enlever, puis de faire les soustractions successives avec les puissances décroissantes.

Ou alors on peut utiliser l'algorithme représenté ci contre.

⚠ Il faut rajouter les restes de droite à gauche. Pour rappel la division entière s'écrit n // 2 et le reste s'obtient en faisant n % 2.

Exercice 22 : décimal vers binaire

Écrire le code de la fonction entier_vers_bin qui prend en paramètre un entier et qui renvoie le texte correspondant à sa valeur en binaire.

Exemples
>>> entier_vers_bin(0)
"0"
>>> entier_vers_bin(1)
"1"
>>> entier_vers_bin(2)
"10"
>>> entier_vers_bin(13)
"1101"

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.1280133S%u j)fc#m67ia2"qrldP4(;n ey/:sgwbà.p+_v&t=51hko010n0u0J0h0g0m0y070b0m0h0y0y0K0j0J0g0E0j000t010y060d0d0h0l0v00040P0m060(0P0s010w0/0;0?0^0-0n0g0H070=0l0O0n0P0A0s0&0M0j070y0J0v0m0u0&1d0z0g0s0x0M0D0f0u0d070M1C1m0,0Q1a0Y0!0$0&0N0g0z0N0m1Q0N0J0+010T0B1r1L0#0%0j1P1R1T1R0J1Z1r1X0J0l001Y0N0Y0{0y0E0h1j0j0i1m0Z1%0&0a0V0u0s0h0d0u1X1`1|1$1N0j251r282a0+02070o0l0P0E0P0y0g0~0s070R1^0l0l0u0b2w122d0s1=0w0J0N2J1:1=2O1Y0n2f1&1T0s272t1X191b222g2V2X2!1X0E2C1=2H2J2-0.1{2x2$1&0s0P0l0=0m0+0M2G2;1I2H2T0&2^2`0h2|000i301|322;340j362{0+033c2I0-332?352_3j000p3m3e2e3q3h3s380+0L3w3o3f3z3i3C000e3F2:3y1M2@3B390f3w122*0u2J2!2N0n2P2S3z0b0P0R2Z1a1=3X2,313V3(0R3/3P230j0O0+0R0a3w073O2=3Q350a0+270(0u0l0G0H4a0y0G0B1w3V3p440j0*000q4j3H4l0s0+0s0B0G480g4a4q3^2g4n090x3F074I414k3_4t004v4g4i13314K4r3_0P0+0K40423g0y20000I0k060P0J0r4(4*4,4H4J4#3z3{000A1P1r4!4L2g4N4P4y4A4S3d4U4C1&4X4'0z4,4Z552I57433_0d0g0+3b5f3@5i4D0+4G5o0t4J5w5h3g514w4h115o5y3z5a5e2-5F4s0B0+1o0l4B5q1&4n4p5o4?4s4u4w535P5V4~590+055Q3g5k5m5)3z4E4}4V2g5a0F5:58355Y4Q5D5J5W3_0b1l000c072s060l070l0h080P0}4a070C070z0h060b0N0u4;5x5K4M5{5!5^5R0&5H6w5z6u0s495#5~5%6y0+0w0w6A3z5+3a6q6s505{5C6M4l6z5E60505M005O5-4l5T6&6t4O5Z6D4z6F3:6H4m0+096V4W0+5@6Y6;5A5|6^2g620+65101c0S071#0R0l0s6.0Y1P0a0a2C6h6j6l6n6p5u5w6Z1&4^2C0J685}4T7r5`6+705u123=3Y3W2+123!120J3$7L1;7L0h1!7G0w3!0-7U3,7W0R0T0V0y00

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013j/6v_&r7ay)t: P=+cmwqfs5#1pn.g";2uiSb k3à4(h%loed010P0O0e0b0B0M0p0E0k0M0b0p0p0i0x0e0B0t0x000g010p0A0l0l0b090c000C0N0M0A0(0N0u01040/0;0?0^0-0P0B060E0=090F0P0N0m0u0&0s0x0E0p0e0c0M0O0&1d0w0B0u0f0s0v0a0O0l0E0s1C1m0,0Q1a0Y0!0$0&0K0B0w0K0M1Q0K0e0+010T0D1r1L0#0%0x1P1R1T1R0e1Z1r1X0e09001Y0K0Y0{0p0t0b1j0x0z1m0Z1%0&0o0V0O0u0b0l0O1X1`1|1$1N0x251r282a0+020E0h090N0t0N0p0B0~0u0E0R1^09090O0k2w122d0u1=040e0K2J1:1=2O1Y0P2f1&1T0u272t1X191b222g2V2X2!1X0t2C1=2H2J2-0.1{2x2$1&0u0N090=0M0+0s2G2;1I2H2T0&2^2`0b2|000z301|322;340x362{0+0G3c2I0-332?352_3j000I3m3e2e3q3h3s380+0q3w3o3f3z3i3C00053F2:3y1M2@3B390a3w122*0O2J2!2N0P2P2S3z0k0N0R2Z1a1=3X2,313V3(0R3/3P230x0F0+0R0o3w0E3O2=3Q350o0+270(0O0907064a0p070D1w3V3p440x0*000J4j3H4l0u0+0u0D07480B4a4q3^2g4n0d0f3F0E4I414k3_4t004v4g4i13314K4r3_0N0+0i40423g0p2000080n0A0N0e0y4(4*4,4H4J4#3z3{000m1P1r4!4L2g4N4P4y4A4S3d4U4C1&4X4'0w4,4Z552I57433_0l0B0+3b5f3@5i4D0+4G5o0g4J5w5h3g514w4h115o5y3z5a5e2-5F4s0D0+1o094B5q1&4n4p5o4?4s4u4w535P5V4~590+0L5Q3g5k5m5)3z4E4}4V2g5a0j5:58355Y4Q5D5J5W3_0k1l000r0E2s0A090E090b030N0}4a0E0H0E0w0b0A0k0K0O4;5x5K4M5{5!5^5R0&5H6w5z6u0u495#5~5%6y0+04046A3z5+3a6q6s505{5C6M4l6z5E60505M005O5-4l5T6&6t4O5Z6D4z6F3:6H4m0+0d6V4W0+5@6Y6;5A5|6^2g620+65101c0S0E1#0R090u6.0Y1P0o0o2C6h6j6l6n6p5u5w6Z1&4^2C0e685}4T7r5`6+705u123=3Y3W2+123!120e3$7L1;7L0b1!7G043!0-7U3,7W0R0T0V0p00