
Représentation des nombres
Un peu d'Histoire
Il y a 4000 ans, les babyloniens inventèrent la base 60 comptant sur 12 phalanges et 5 doigts et la numération de position .
Or, les Romains eux n'utilisaient pas le système de position
Au IVème siècle, en Inde, on utilise le 0, la numération de position et la base 10
Les premiers ordinateurs stockaient sur une carte perforée, l'unité de calcul est le bit
Exemple de système de positions et de systèmes sans celui ci :
Système de position :
111
111
Système Romains :
111
3
Tableau de valeurs
0 0 0
1 1 1
2 2 10
3 3 11
4 4 100
5 5 101
6 6 110
7 7 111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
16 G 10000
17 10 10001
Exemples :
14(10) = 1 x 10**1 + 4 x 10**0
1110(2) = 1x2**3 + 1 x 2**2 + 1 x 2**1 + 0 x 2**0
=14
111(16) = 1 x 16**2 + 1x 16**1 + 1 x 16**0
=273

Conversions
Nous allons voir plusieurs type de conversions, il y a celle mathématique et avec python reposant sur le même principe mais avec une commande associée à python
Mathématiques
Tout d'abord, pour convertir une base à une autre nous devons utilisée une division Euclidiennes pour passez de la base 10 à la base 2 et la base 10 à la base 16
Pour passer de la base 10 à 2
On fait une division euclidienne par 2 et on va garder le reste qu'on notera dans notre nombre binaire, puis on redivisera le résultat de la division encore par 2 , on répétera cette étape jusqu'à ce que le résultat soit nul donc égal à 0, de plus on lira les restes d'une certaine manière a l'appui sur l'exemple

Pour passez de la base 10 à 16
pour la conversion entre les bases, on fera le même principe que pour passer de la base 10 à 2
Pour passer de la base 16 à 2 ou l'inverse
on se doit de prendre chaque ensemble de 4 bits et de convertir directement chaque valeur c'est à dire de convertir la valeur d'un ensemble de 4 bits en binaire en la valeur associée dans la base 16:

En python
En python, nous avons directement des fonctions pour convertir directement une base en une autre:
Fonction de base en python :
0b : cette instruction transformera la base binaire en base décimal : 0b10101010100 = 1364
bin est le même principe mais à l'envers : bin(18) = 10010
hexa permet de traduire un nombre décimal en nombre hexadécimal : hex(12) = 0xc
et donc dans le le principe opposé on a 0x : 0x15 = 21
Seulement, on peut créer des programme pour le faire manuellement ; bien sur ; c'est assez inutile mais pour l'utilité pédagogique on s'en moque :
n = [1,0,1,0,1,0,1,0,1,0]
p = [1,0,1,0,1,0,1,0,1,0]
r = [0,0,0,0,0,0,0,0,0,0,0]
c =0
for i in range(9,-1,-1):
a = n[i]
b = p[i]
print(i)
r[i+1] =(a and not b and not b ) or (not a and b and not c) or (not a and not b and c) or (a and b and c)
c= (a and b) or (b and c) or (a and c)
r[0]=c
print(r)
a = "1010101010"
b = "1010101010"
sum = int(a,2) +int(b,2)
print(bin(sum))
Console :
9
8
7
6
5
4
3
2
1
0
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0]
0b10101010100