top of page

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

Base 2 ,10 et 16

Les différentes manière de compter

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 

Python-Logo-PNG_008.png

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

conversion.png

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:

2_edited.jpg

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

bottom of page