• Aucun résultat trouvé

SÉANCE 1

N/A
N/A
Protected

Academic year: 2022

Partager "SÉANCE 1"

Copied!
8
0
0

Texte intégral

(1)

SÉANCE 1

REPRÉSENTATION DES NOMBRES : ENTIERS

I Ecriture des entiers naturels dans une base . . . . 2

II Conversion d’un nombre dans une autre base . . . . 3

III Représentation des entiers positifs sur des mots de taille fixe . . . . 4

Notion de mots . . . . 4

Notion de bit . . . . 4

Nécessité d’utiliser des mots de taille fixe . . . . 4

Mots de longueur fixée . . . . 4

Addition de nombres en base 2 . . . . 5

Dépassement de capacité. . . . 5

IV Représentation des entiers signés sur des mots de taille fixe . . . . 7

V Entiers multi-précision . . . . 8

(2)

I. ECRITURE DES ENTIERS NATURELS DANS UNE BASE REPRÉSENTATION DES NOMBRES:ENTIERS

I. Ecriture des entiers naturels dans une base

Les entiers naturels que nous manipulons sont écrits enbase 10. Par exemple, 238 est une abréviation pour : 238=2×102+3×101+8×100.

Plus généralement, considéronsbÊ2 un entier.

Tout entier naturelNs’écrit sous la forme :

N=ap−1×bp1+ap−2×bp2+ · · · +a1×b+a0

où, pour toutk∈{0, ...,p−1},ak∈{0, ...,b−1}. On dit que les entiersa0, . . . ,ap1 sont les chiffres deN en baseb.

On note alors :

N=ap1. . .a1a0b. Par exemple, avecb=2, on a :

110102=1×24+1×23+0×22+1×21+0×20=2610 Lorsqueb>10, un problème se pose : quels chiffres utiliser après 9 ?

On règle le problème en utilisant des lettres majuscules.

Par exemple, en base 16, les chiffres sont 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(=10), B(=11), C(=12), D(=13), E(=14), F(=15).

Ainsi,

E3F16=14×162+3×161+15×160=364710.

Baseb Nom Chiffres Exemple Python

2 binaire 0 et 1 101012 0b101010

8 octale 0 à 7 528 0o52

10 décimale 0 à 9 42 42

16 hexadécimale 0 à 9, A à F 2A16 0x2A

Pour préciser la base utilisée, Python utilise un préfixe : Ï 0bsi l’entier est écrit en binaire ;

Ï 0osi l’entier est écrit en base 8 ; Ï 0xsi l’entier est écrit en hexadécimal.

Pour convertir un entier naturel

Ï en base 2, on peut utiliser la fonctionbin(); Ï en base 8, on peut utiliser la fonctionoct(); Ï en base 16, on peut utiliser la fonctionhex().

(3)

REPRÉSENTATION DES NOMBRES:ENTIERS II. CONVERSION DUN NOMBRE DANS UNE AUTRE BASE

II. Conversion d’un nombre dans une autre base

Dans toute cette partie, on effectue les calculs en base 10.

SoitN∈N?. Pour déterminer l’écriture deNen baseb,

on effectue la division euclidienne deNparbjusqu’à tomber sur un quotient égal à 0.

Les chiffres deN en basebsont les restes obtenus (lus dans l’ordre inverse où ils sont apparus) Écrivons 19 en base 2 :

19 = 9×2 + 1 .

9 = 4×2 + 1 .

4 = 2×2 + 0 .

2 = 1×2 + 0 .

1 = 0×2 + 1 STOP

Donc,

19=100112. def conversion(N,b):

assert b >= 2 and N >= 1 L = []

M = N

while M != 0:

q,r = M//b, M%b L.append(r) M = q

L.reverse() # Renverse la liste L return L

print(conversion(19,2)) [1, 0, 0, 1, 1]

(4)

III. REPRÉSENTATION DES ENTIERS POSITIFS SUR DES MOTS DE TAILLE FIXE REPRÉSENTATION DES NOMBRES:ENTIERS

III. Représentation des entiers positifs sur des mots de taille fixe

Notion de mots

On considère l’alphabet composé des lettres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 On appellemotde longueurn, toute succession denlettres.

Par exemple, les entiers 9, 16, 276 et 3653 sont représentés par les mots de 4 lettres : 0009, 0016, 0276 et 3653.

Si un nombre est composé de moins denchiffres en base 10, on le complète en ajoutant des zéros.

Notion de bit

Ï La mémoire de l’ordinateur est composée d’une multitude de petits circuits électroniques qui ne peuvent être que dans deux états : sous tension et hors tension (penser à un interrupteur).

Ï bit: Binary Digit. C’est le nom donné aux états d’un petit circuit électronique. On la représente par un chiffre binaire (0 ou 1).

Ï On peut imaginer la mémoire de l’ordinateur comme une suite de cases contenant des 0 et des 1. Chaque case représente un bit.

Ï Le moyen le plus simple de stocker un entier naturel en mémoire est de stocker ses chiffres en base 2.

Nécessité d’utiliser des mots de taille fixe

Considérons la portion suivante de la mémoire de l’ordinateur :

1 0 0 1 1 0 1 1

Que doit-on lire : les entiers 10012 et 11012 écrits les uns à côté des autres, ou l’entier 100111012? Il apparaît alors nécessaire de savoir le nombre de bits utilisés pour écrire les entiers.

Mots de longueur fixée Soitn∈N?.

On dit qu’un entier naturelN peut être représenté surnbits lorsque son nombre de chiffres en base 2 est inférieur à n.

Autrement dit, il est possible de l’écrire comme un mot de longueurn(quitte à ajouter des zéros au début).

Le bit le plus à gauche est appelébit de poids fortet le bit le plus à droite est appelébit de poids faible.

Remarques:

Ï Un groupement de 8 bits est appelé unoctet.

Ï Sur la plupart des ordinateurs récents, les mots sont composés de 64 bits (paquets de 8 octets).

Exemples:

Ï On aN=251=111110112. On peut représenterN sur 8 bits et on écrit :

1 1 1 1 1 0 1 1

Ï On aN=12=11002. On peut représenter Nsur 8 bits et on écrit :

(5)

REPRÉSENTATION DES NOMBRES:ENTIERS III. REPRÉSENTATION DES ENTIERS POSITIFS SUR DES MOTS DE TAILLE FIXE

0 0 0 0 1 1 0 0

Ï L’entier 0 est représenté par :

0 0 0 0 0 0 0 0

Le plus petit entier représenté surnbits est celui où tous les bits sont nuls : 0 Le plus grand entier représenté surnbits est celui où tous les bits sont égaux à 1 :

1 . . . 12=1+2+ · · · +2n−1=2n−1.

En effet, on reconnaît une somme de termes de suites géométriques Ainsi, surnbits, il est possible d’écrire 2nentiers.

Addition de nombres en base 2

L’addition en binaire s’effectue comme en base 10saufque la retenue de 1 a lieu quand on effectue l’opération 1+1.

La musique est : Ï 0+0=0.

Ï 1+0=1.

Ï 0+1=1.

Ï 1+1=10 : il y a une retenue.

Calculons 100112+10112.

On a (les retenues sont encadrés) :

1 1

1 0 0 1 1

+ 0 1 0 1 1

1 1 1 1 0

Donc, 100112+10112=111102. On peut vérifier le résultat en revenant à la base 10.

Dépassement de capacité

On considèreN1=111110112etN2=10102. On peut représenter ces entiers sur 8 bits :

N1: 1 1 1 1 1 0 1 1 N2: 0 0 0 0 1 0 1 0 Faisons l’additionbit à bit:

0 0 0 0 0 1 0 1

et il reste une retenue qui est perdue !

En effet, la sommeN1+N2=1000001012est composée de 9 chiffres en base 2. On ne peut donc pas le représenter sur 8 bits !

En travaillant sur 8 bits, le premier 1 dans l’écriture en base 2 deN1+N2 sera perdu. On récupérera alors l’entier représenté par :

(6)

III. REPRÉSENTATION DES ENTIERS POSITIFS SUR DES MOTS DE TAILLE FIXE REPRÉSENTATION DES NOMBRES:ENTIERS

0 0 0 0 0 1 0 1

C’est à dire 5. . . Que s’est-il passé ?

En additionnant des entiers représentés surnbits, s’il y a une retenue sur le dernier bit, alors cette retenue est perdue. En effet, conserver la retenue demande un bit supplémentaire.

On parle dedépassement de capacité.

Remarques :

Ï Pour effectuer l’addition de deux nombres représentés sur nbits :

• On effectue l’addition bit à bit des deux représentations (avec la règle : 1+1=0 et je retiens 1) ;

• On laisse tomber la dernière retenue en cas de dépassement de capacité.

Ï Remarque historique: c’est un dépassement de capacité qui a causé le crash de la fusée Ariane 5 en 1996.

Ï Le typeentier positif n’existe pas en Python. Le typeintcorrespond aux entiers relatifs.

(7)

REPRÉSENTATION DES NOMBRES:ENTIERS IV. REPRÉSENTATION DES ENTIERS SIGNÉS SUR DES MOTS DE TAILLE FIXE

IV. Représentation des entiers signés sur des mots de taille fixe

Principe :

Soitn∈N? le nombre de bits disponibles. On peut représenter surnbits les entiers compris entre−2n1 et 2n1−1.

On dit que ce sont lesentiers signéssurnbits.

SoitN∈££

−2n−1, 2n−1−1¤¤

. Ï Si N∈££

0, 2n−1−1¤¤

, on représenteN surnbits comme un entier naturel (partie précédente).

Ï Si N∈££

−2n−1,−1¤¤

, lesnbits deNsont les chiffres de 2n+Nen base 2.

Ï Cas 1: Entiers positifs Les entiersN∈££

0, 2n−1−1¤¤

possèdent au plusn−1 chiffres en base 2. Le premier bits deN est donc 0.

−→Le bit tout à gauche d’un nombre positif ou nul est 0.

Ï Cas 2: Entiers négatifs SoitN∈££

−2n1,−1¤¤

. On a 2n+N∈££

2n1, 2n−1¤¤

Donc, 2n+N possède exactementnchiffres en base 2 et son écriture est de la forme : 1an−2. . .a02. Le premier bits de N est donc 1.

−→Le bit tout à gauche d’un nombre strictement négatif est 1.

Exemple (sur 8 bits)

Ï On considèreN1=3=112etN2= −4.

On aN1Ê0,N2<0 etN2+28=252=111111002. D’où, sur 8 bits, on a :

N1 : 0 0 0 0 0 0 1 1 N2 : 1 1 1 1 1 1 0 0 Ï Effectuons l’addition bit à bit :

N1+N2 : 1 1 1 1 1 1 1 1

Le bit le plus à gauche est un 1, l’entier représenté est donc négatif strictement. On le noteN. On sait alors que N+28=111111112=28−1.

Donc,N= −1. Avec cette méthode de représentation, l’addition classique et l’addition bit à bit donnent le même résultat.

Ï SiN1,N2etN1+N2appartiennent ࣣ

−2n−1, 2n−1−1¤¤

, alors la représentation en complément à 2 deN1+N2est obtenue en addition bit à bit les représentations en complément à 2 deN1et N2, même en cas de dépassement de capacité.

Ï Lorsque N1+N2 n’appartient pas à ££

−2n1, 2n1−1¤¤

, le résultat ne tient plus. Prendre par exemple N1=N2=2n−1−1.

(8)

V. ENTIERS MULTI-PRÉCISION REPRÉSENTATION DES NOMBRES:ENTIERS

V. Entiers multi-précision

Les processeurs des ordinateurs actuels utilisent généralement des mots de 64 bits. Avec la méthode du complément à 2, le plus grand entier signé pouvant être représenté est 263−1=9223372036854775807

Que se passe-t-il si on demande à Python d’effectuer l’opération 9223372036854775807+1 ? 9223372036854775807+1

9223372036854775808 Décevant. . .

Le langage Python a été programmé de sorte à pouvoir manipuler des entiers de taille illimitée (en fait, il y a une limite : la mémoire de l’ordinateur !).

Lorsqu’un nombre dépasse la taille maximale que le processeur peut manipuler, Python s’occupe de le découper et d’effectuer les opérations demandées.

Cependant, cela a un coût et manipuler de grands entiers peut ralentir un programme.

from time import time debut = time()

n = 0

for i in range(2000):

n = n * (2 ** i) fin = time()

print("Temps de calcul :", fin - debut) debut = time()

n = 2**180

for i in range(2000):

n = n * (2 ** i) fin = time()

print("Temps de calcul :", fin - debut) Temps de calcul : 0.003095865249633789 Temps de calcul : 2.1554622650146484

Références

Documents relatifs

Vous pourriez accéder à une partie ou à la totalité des fonds que vous déposez avant l’expiration de la période de retenue des fonds si nous vous avons autorisé un montant

ETAPE 2 : Turbinage par la centrale de Barot de l’eau dans la retenue jusqu’à la cote 774,73 m NGF (cote de la génératrice supérieure de la conduite forcée)  aucun départ de

• Les séparateurs simples en béton adhérent (GBA) : dispositifs coulés en place et constitués d’un muret en béton de profil dissymé- trique de 80 cm de hauteur et de 48 cm

Le dernier paramètre achevant la détermination des chiffres R, I de l’addition est la retenue c, qui permet de maintenir I entre 0

Projet d’arrêté préfectoral portant dérogation aux interdictions de destruction de spécimens et d’habitats d’espèces animales protégées dans le cadre d’un projet de

 Mise en place du double ancrage après le bloqueur soit avec un cabestan autour du tronc de l'arbre avec la queue de corde soit en installant un système sangle- mousqueton et nœud

2 Exemple basé sur l’année d’imposition 2022, pour une personne avec un revenu annuel imposable de 40 000 $, ayant un taux d’imposition marginal de 27,5 %, recevant 12 paies

Sans retenue Avec retenue.. Avec les