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
>>> 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 den
par2
n // 2
est le quotient dans la division den
par2
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-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-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-nl
A
Z