141 lines
3.4 KiB
Markdown
141 lines
3.4 KiB
Markdown
|
|
# Exercices : Représentation des nombres naturels
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## Manipulation
|
||
|
|
|
||
|
|
__Question 1 :__ Écrire une fonction `est_valide(binaire)` qui retourne :
|
||
|
|
|
||
|
|
* **True** si le nombre est valide
|
||
|
|
* **False** si le nombre est invalide.
|
||
|
|
Le paramètre de la fonction sera une chaîne de caractères représentant un nombre écrit en base 2.
|
||
|
|
|
||
|
|
``` python
|
||
|
|
>>> est_valide("100010101")
|
||
|
|
True
|
||
|
|
>>> est_valide("1010401034")
|
||
|
|
False
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
__Question 2 :__ Écrire une fonction ``est_pair(binaire)`` qui retourne :
|
||
|
|
|
||
|
|
* **True** si le nombre passé en paramètre est pair
|
||
|
|
* **False** si le nombre passé en paramètre est impair.
|
||
|
|
Le paramètre de la fonction sera une chaîne de caractères représentant un nombre écrit en base 2.
|
||
|
|
|
||
|
|
```python
|
||
|
|
>>> est_paire('1001')
|
||
|
|
False
|
||
|
|
>>> est_paire('1010')
|
||
|
|
True
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## Conversion Binaire - Décimal
|
||
|
|
|
||
|
|
__Question 3 :__ Écrire une fonction ``deux_puissance(rang)`` qui retourne la puissance de 2 associée au rang passé en paramètre. Vous n'utiliserez pas les fonctions Python déjà existantes.
|
||
|
|
|
||
|
|
``` python
|
||
|
|
>>> deux_puissance(0)
|
||
|
|
1
|
||
|
|
>>> deux_puissance(1)
|
||
|
|
2
|
||
|
|
>>> deux_puissance(2)
|
||
|
|
4
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
__Question 4 :__ A l'aide des fonctions précédentes, écrire une fonction ``binaire_en_decimal(binaire)`` qui retourne la valeur décimale du nombre passé en paramètre. Le paramètre sera une chaîne de caractères représentant un nombre binaire. On vérifiera que ce nombre binaire est valide.
|
||
|
|
|
||
|
|
``` python
|
||
|
|
>>> binaire_en_decimal("1")
|
||
|
|
1
|
||
|
|
>>> binaire_en_decimal("1010")
|
||
|
|
10
|
||
|
|
>>> binaire_en_decimal("1001")
|
||
|
|
9
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## Conversion Décimal - Binaire
|
||
|
|
|
||
|
|
__Question 5 :__ Écrire une fonction ``division_euclidienne(nombre, diviseur)`` qui retourne le quotient et le reste obtenu lorsque l'on divise le paramètre *nombre* par le paramètre *diviseur*.
|
||
|
|
|
||
|
|
``` python
|
||
|
|
>>> division_euclidienne(6,3)
|
||
|
|
(2,0)
|
||
|
|
>>> division_euclidienne(10,4)
|
||
|
|
(2,2)
|
||
|
|
>>> reste(6, 0)
|
||
|
|
None
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
__Question 6 :__ A l'aide de l'algorithme de la division euclidienne et des fonctions précédentes, écrire une fonction ``decimal_en_binaire(*decimal*)`` qui retourne une chaîne de caractères correspondant à la représentation binaire du nombre passé en paramètre.
|
||
|
|
|
||
|
|
|
||
|
|
``` python
|
||
|
|
>>> decimal_en_binaire(16)
|
||
|
|
"10000"
|
||
|
|
>>> decimal_en_binaire(31)
|
||
|
|
"11111"
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## Conversion Décimal - Hexadécimal
|
||
|
|
|
||
|
|
__Question 7 :__ Écrire une fonction ``symbole_hexa(decimal)`` qui retourne le symbole correspondant au paramètre dans la base 16.
|
||
|
|
|
||
|
|
```python
|
||
|
|
>>> symbole_hexa(1)
|
||
|
|
"1"
|
||
|
|
>>> symbole_hexa(10)
|
||
|
|
"A"
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
__Question 8 :__ En s'inspirant des questions précédentes, écrire une fonction ``decimal_en_hexa(decimal)`` qui retourne une chaîne de caractères correspondant à la représentation en base 16 du nombre passé en paramètre.
|
||
|
|
|
||
|
|
``` python
|
||
|
|
>>> decimal_en_hexa(21)
|
||
|
|
"15"
|
||
|
|
>>> decimal_en_hexa(2019)
|
||
|
|
"7E3"
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## Conversion Hexadécimal - Décimal
|
||
|
|
|
||
|
|
__Question 9 :__ écrire une fonction ``hexa_en_decimal(hexa)`` qui retourne le nombre correspondant à la représentation en base 10 du nombre passé en paramètre.
|
||
|
|
|
||
|
|
```python
|
||
|
|
>>> hexa_en_decimal("A")
|
||
|
|
10
|
||
|
|
>>> decimal_en_hexa("E10F")
|
||
|
|
57615
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## Conversion en base $$n$$
|
||
|
|
|
||
|
|
__Question 10 :__ En s'inspirant des fonctions 8 et 10, écrire une fonction ``decimal_en_base_n(decimal, base)`` qui retourne une chaîne de caractères correspondant à la représentation en base *n* du nombre passé en paramètre.
|
||
|
|
|
||
|
|
```python
|
||
|
|
>>> decimal_en_base_n(10,2)
|
||
|
|
"1010"
|
||
|
|
>>> decimal_en_base_n(10,16)
|
||
|
|
"A"
|
||
|
|
>>> decimal_en_base_n(10,5)
|
||
|
|
"20"
|
||
|
|
```
|