Aller au contenu

Représentation d'un entier positif dans différentes bases

Programme

Notions Compétences Remarques
Écriture d'un entier positif dans une base \(b\geq2\) Passer de la représentation d'une base dans une autre. Les bases 2, 10 et 16 sont privilégiées
Le système binaire

La notion de Base

En base 2, on ne dispose que des chiffres 0 et 1. Le système binaire est un système de numération de position (comme le système décimal, hexadécimal... mais pas comme le système romain). À chaque rang correspond une puissance de 2.

Les bases utiles en informatique

En plus de la base décimale (base 10) que nous utilisons habituellement, trois bases sont principalement utilisées en informatique :

  • la base 2 (le système binaire)
  • la base 8 (le système octal)
  • la base 16 (le système hexadĂ©cimal)

On précisera la base en indice du nombre énoncé : \(13_{10}=1101_2=15_{8}=\rm{D}_{16}\)

Opérations sur les binaires

Manipuler les données binaires

Activité 1 - Somme de 2 nombres binaire

L'addition binaire se pose comme celle en décimal (système de retenues).

  1. Effectuer la somme des deux nombres binaires 00001101 et 00001011.
  2. Vérifier que le résultat est cohérent en base 10.
Correction
  1. retenues:  1111
            00001101
          + 00001011
          ----------
          = 00011000
    
  2. Cette addition correspond Ă  \(13+11=24\)
Conversions en base 2
... 128 64 32 16 8 4 2 1
... \(2^7\) \(2^6\) \(2^5\) \(2^4\) \(2^3\) \(2^2\) \(2^1\) \(2^0\)
... 1 1 0 1 0 0 1 0

\(11010010_2=1 \times 2^7+ 1 \times 2^6+0 \times 2^5+1 \times 2^4+0 \times 2^3+0 \times 2^2+1 \times 2^1+0 \times 2^0=128+64+32+2=210_{10}\)

Le nombre binaire 11010010 correspond donc au nombre décimal 210.

Principe : dans chaque nombre décimal, il existe une plus grande puissance de 2 qui est inférieure au nombre.

Par exemple, dans 243, il y a 128. Donc
\(243=128 + (115)\)
\(243=128+64+(51)\)
\(243=128+64+32+(19)\)
\(243=128+64+32+16+(3)\)
\(243=128+64+32+16+2+1\)
\(243=1 \times 2^7+ 1 \times 2^6+1 \times 2^5+1 \times 2^4+0 \times 2^3+0 \times 2^2+1 \times 2^1+1 \times 2^0\)

Donc \(243_{10}=11110011_2\)

MĂ©thode des divisions successives

Activité 2 - Nombre de valeurs d'un octet

Quelle est la valeur maximale d'un octet (un octet = 8 chiffres binaires) ?

RĂ©ponse

\(11111111_2=255\). On retrouve ce nombre comme étant la valeur maximale d'une composante de couleur dans le codage RGB, ce qui signifie que chaque composante est codée sur un octet.

Activité 3 - Fonction Python de conversion en binaire

Créer une fonction binaire(n) qui renvoie l'écriture binaire de n, en utilisant les divisions successives.

Rappel Python

L'opérateur // donne le quotient de la division et % donne le reste.

>>> 7//2
3
>>>7%2
1

###(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

.128013rt=7fl%b)1 2e/vyg.:]8sw9nuph5aS(o3!qki4+6P;Ă©[cdm0050V0n0c0E0M0g0w0l0U0g0E0w0w0d010c0M0B010406050w0A0W0W0E0b0q040F0H0g0A0=0H0z050o0|0~10120`0B04051i1b1l0o1i0`0V0M0p0*0,0.0:0C0M0r0C0g1z0C0c0^050#0i0g0n1u0-0/011y1A1C1A0c1I1K1G0c0b1j0c0C0*150w0B0E0z0:0m011M1w010f0%0n0z0E0W0n1G1)1+1:1O1?1K1_1{0^0a0l0Q0b0H0B0H0w0M180z0l0Z1%0b0b0n0U2g1b1~0z1j0o1#2t1Y1!1Z1H0V200:1C0z1^2d1G1r1t0+1N2D0M2F0z0H2J1G0B2m1j2r2t2X0{1*2h2L1;2Q0b0 0g0^0l0k2q2#0_2!1 2%1O2)2+2-0m2:1+2=2r2C012`0E2,040l0I2~2s0`312^0:34360l0N3a302#323g2-0D3k3c3m3e330H2*352-0P3r2?2$1v2_3w2{370e3B3d3E3f3G3y370v3K3t3M3v3x3h0y3S2@3U3o040k0X3Z3D2M3V3H0k2/1c2;1m2V1b2J2w0V1!2B3u0U2R1|1j3_1k3@2Z3;2 053 0Z2W3T3,0L0^0Z0f3k0l3C3n0f0^0i2O0$2m3k4l3u0@040G4t3L3,0z0^1a472s4u3U4w0j4j4H3,4w0t3*320x2-0l4U4z4d1;0w0V0^02030I0y0R4$4(4*4%4)0l2m3 0W2c0w1L1K0l0W0H0c0l4p1_0M2m0l1^4{0!0#0z4~0V1+0)0g4+4)3w0V531K0)2m0w0c0n0)0|0U0U5p2e0f0w5f4-4,5y3r4U4V4A2(0^1C5n0n4L5F1O0H0^0d5L4X1O4w0T0u5C5D4M1;4f040x1y1K5R3!4B4D5*3+1;5O040J5Q4F375Z1O0W0M0^3)5^4k5M0:4O5X5D5Y62335H0M5J4W5+5:0^0s6d5/2_0^0E0B0B1^0V6i324w4y5^5`3f5-606w015;0h5.325|0^2}6v684J6566615S6x044E2X6O6e5N5P6E3u4C6R6Y3U5;0o0o6$3,6G046I2X06666A6!5I5o6r3u5;6h6J6P69042m0p0n0b4^6`4I0^0G4K6z680U0k0^036o2*0!2i5y2O7375740l5e4.0R5h530Z0)0S0g0S1{597l7t0A2F7r6b6_5^6;676 [email protected]}4*7)7+6M6A5#0f3w7V6k040L7@0:0H4S042O7{706^5K7c6 647L6N7N6V6Q7Q1K7T815;0O7Y2;6U6j3f0i0^5n7U6~8b016t775,7_8w1;6L888a8m015#2m0c7T6S8k6?0^8d7S8r6:1b4a0n2t2U8U3^1s3`2w2z2u0E1J8X0o3_0`8+0!0$0(04.
Le système hexadécimal

L'inconvénient essentiel du système binaire est la longueur de l'écriture des nombres qu'il génère. Pour cette raison, le système hexadécimal, ou système de base 16 est très souvent employé.

  • Pour Ă©crire en base 2, il faut 2 chiffres diffĂ©rents : le 0 et le 1.

  • Pour Ă©crire en base 10, il faut 10 chiffres diffĂ©rents: 0,1,2,3,4,5,6,7,8,9.

  • Pour Ă©crire en base 16, il faut donc 16 chiffres diffĂ©rents : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

On a donc la correspondance :

  • A reprĂ©sente 10
  • B reprĂ©sente 11
  • C reprĂ©sente 12
  • D reprĂ©sente 13
  • E reprĂ©sente 14
  • F reprĂ©sente 15

De l'hexadécimal vers le décimal :

256 16 1
\(16^2\) \(16^1\) \(16^0\)
1 D 2

\(\rm{1D2}_{16}=1 \times 16^2+ 13 \times 16^1+2 \times 16^0=256+208+2=466_{10}\)

Le nombre hexadécimal 1D2 correspond donc au nombre décimal 466.

En pratique, l'hexadécimal est surtout utilisé pour sa capacité à représenter la valeur de n'importe quel octet sur 2 chiffres ("chiffres" étant à prendre au sens large = chiffres ou lettres !).

Activité 4 - Conversion en hexadécimal
  1. Donner la valeur des octets FF, 3A, B2.

  2. Expliquer pourquoi la couleur RGB (138,255,51) a pour code html #8AFF33.

  3. Quelle est la couleur html du blanc ?

RĂ©ponses
  1. FF = 255 ; 3A = 58 ; B2 = 178

  2. 138 a pour code hexa 8A, 255 a pour code hexa 255, 51 a pour code hexa 33.

  3. #FFFFFF (rouge, vert et bleu sont au max)

Les changements de base en Python

La fonction int("nombre", base) permet de convertir un nombre de n'importe quelle base en entier décimal. Par exemple, en binaire :

>>> int("11010010", 2)
210

La fonction bin(nombre) renvoie une chaîne de caractère où le nombre binaire est précédé de '0b'.

>>> bin(243)
'0b11110011'

La fonction hex(nombre) renvoie une chaîne de caractère où le nombre hexadécimal est précédé de '0x'.

>>> hex(125)
'0x7d'

On peut utiliser la fonction int("nombre",base).

>>> int("FF", 16)
255

Amuse toi ici :

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