Aller au contenu

Conversion binaire⚓︎

Écrire une fonction conversion_binaire qui prend en paramètre un entier positif n et renvoie une liste bits d'entiers égaux à 0 ou 1, la représentation en binaire de n, avec les bits de poids forts en premier.

Représentation binaire de \(13\)

  • \(13\) divisé par \(2\) donne \(6\) et reste \(1\).
  • \(6\) divisé par \(2\) donne \(3\) et reste \(0\).
  • \(3\) divisé par \(2\) donne \(1\) et reste \(1\).
  • \(1\) divisé par \(2\) donne \(0\) et reste \(1\).
  • On s'arrête.
  • La liste renversée des restes est [1, 1, 0, 1]

Représentation binaire de \(4\)

  • \(4\) divisé par \(2\) donne \(2\) et reste \(0\).
  • \(2\) divisé par \(2\) donne \(1\) et reste \(0\).
  • \(1\) divisé par \(2\) donne \(0\) et reste \(1\).
  • On s'arrête.
  • La liste renversée des restes est [1, 0, 0]

Le bit de poids fort est en premier.

Exemple
🐍 Console Python
>>> conversion_binaire(13)
[1, 1, 0, 1]
>>> conversion_binaire(4)
[1, 0, 0]
>>> conversion_binaire(0)
[0]

Consignes et aide

  • On n'utilisera pas la fonction built-in bin
  • On n'utilisera pas la fonction built-in reverse
  • n % 2 est le reste dans la division de n par 2
  • n // 2 est le quotient dans la division de n par 2
###
# testsbksl-nlbksl-nlassert conversionpy-undbinaire(13) == [1, 1, 0, 1]bksl-nlassert conversionpy-undbinaire(4) == [1, 0, 0]bksl-nlassert conversionpy-undbinaire(0) == [0]bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor n in range(100):bksl-nl attendu = list(map(int, bin(n)[2:]))bksl-nl assert conversionpy-undbinaire(n) == attendu, f"Erreur avec {n}"bksl-nlbksl-nl 5/5

def conversionpy-undbinaire(n):bksl-nl restes = [n % 2]bksl-nl n = n // 2bksl-nl while ...:bksl-nl restes.append(...)bksl-nl n = ...bksl-nl # renverser la listebksl-nl nbpy-undbits = len(...)bksl-nl return [restes[...] for i in range(nbpy-undbits)]bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert conversionpy-undbinaire(13) == [1, 1, 0, 1]bksl-nlassert conversionpy-undbinaire(4) == [1, 0, 0]bksl-nlassert conversionpy-undbinaire(0) == [0]bksl-nlbksl-nldef conversionpy-undbinaire(n):bksl-nl restes = [n % 2]bksl-nl n = n // 2bksl-nl while n != 0:bksl-nl restes.append(n % 2)bksl-nl n = n // 2bksl-nl # renverser la listebksl-nl nbpy-undbits = len(restes)bksl-nl return [restes[nbpy-undbits - 1 - i] for i in range(nbpy-undbits)]bksl-nlbksl-nl

A

Z