• Aucun résultat trouvé

I. Représentation des entiers en base 2

N/A
N/A
Protected

Academic year: 2022

Partager "I. Représentation des entiers en base 2"

Copied!
2
0
0

Texte intégral

(1)

PCSI 1 - Stanislas DS d’INFORMATIQUE N2 - 26/03/16 - CORRIGÉ A. MARTIN

INFORMATIQUE

I. Représentation des entiers en base 2

I.1. Entiers naturels

1. n∈[0; 28−1 = 255] . Il y a donc256 valeurs distinctes.

2. def b a s e ( n ):

m = n L = []

w h i l e m != 0:

L = [ m \ % 2 ] + L m = m //2 r e t u r n L

I.2. Entiers relatifs

3. Définition :L’ensemble des entiers représentés est [−2N−1=−128; 2N−1−1 = 127] . a)sin≥0, alors on codenen base 2 surN= 8 bits. Le bit de poids fort estO.

b)sin <0, alors on code l’entier positifn+ 2N=n+ 256 surN= 8 bits. Le bit de poids fort est alors 1.

Il existe donc256 valeurs distinctes.

4. Sin <0, alors on code en base 2 le nombre

2N+n= 2N−1− |n|+ 1 = 111111112− |n|2

| {z }

Complément bit à bit de|n|

+1.

5. Méthode générale pour un nombre positif: on effectue des divisions par 2 successives jusqu’à ce que le quotient soit nul. Le nombre en binaire est alors constitué de la liste des restes dans l’ordre inverse. On complète éventuellement à gauche avec des zéros pour avoir 8 bits.

En pratique: sur 8 bits il est aisé de garder en tête la liste des puissances de 2 successives :

{20= 1,21= 2,22= 4,23= 8,24= 16,25= 32,26= 64,27= 128}

On a28 = 16 + 8 + 4, donc on obtient 2810= 00011100.

Un nombre entier négatif s’obtient en ajoutant 1 au complément bit à bit de sa valeur absolue : 65 = 64 + 1 donc 6510= 010000012 et −6510= 101111112.

6. Méthode: on effectue l’addition en binaire, puis on vérifie si le signe est correct sur le bit de poids fort.

Dans le cas contraire il y a un dépassement de capacité, le nombre attendu est en dehors de l’ensemble [−128; 127].

a)2810⊕6510= 000111002+ 010000012= 010111012= 9310 . L’opération est correcte.

b)2810⊕ −6510 = 000111002+ 101111112 = 110110112 = −001001012=−3710 . L’opération est correcte.

c)6510⊕10310= 010000012+ 011001112 = 101010002= −010110002=−8810. Le résultat devrait être négatif. Il y adépassement de capacité par valeur supérieurcar 168>127.

7. def c o m p l e m e n t _ 2 ( n ):

if n > 127 or n < -128: # e l i m i n e r l e s d e p a s s e m e n t s d e c a p a c i t e r e t u r n F a l s e

L = b a s e (abs( n ))

1

PCSI 1 - Stanislas DS d’INFORMATIQUE N2 - 26/03/16 - CORRIGÉ A. MARTIN

r e t u r n (8 -len( L ) ) * [ 0 ] + L # c o m p l e t e r a v e c d e s 0 s u r 8 b i t s if n >= 0:

r e t u r n L

e l s e: # n<0 : m o d i f i e r l a v a l e u r a b s o l u e i = 0

w h i l e L [ i ] == 0: # t r o u v e r l e 1 e r b i t n o n n u l a d r o i t e i = i + 1

for j in r a n g e( i , len( L )): # m o d i f i e r l e s b i t s a g a u c h e L [ j ] = 1 - L [ j ]

r e t u r n L

II. Représentation des flottants en base 2

8. E∈[−(25−1−1) =−15 ; 25−1= 16] .

En réalité les extrêmes−15 et 16 sont exploitées pour lesexceptions: ±∞, NaN, etc.

9. La précision relative correspond à la variation liée au dernier digit par rapport à la mantisse maximale 1,1111111111≈2, donc 2−10

2 = 2−11= 1

2048≈5×10−4.

10.Méthode: on commence par mettre le nombre décimal sous forme binaire en notation scientifique, puis on applique le codage.

Partie entière : 3210= 25= 1000002= 1,000002×25.

Partie fractionnaire : Il y a déjà 5 chiffres après la virgule donc il n’en reste plus que 5 pour 0,75.

0,75∗25= 24 = 16 + 8 = 110002. On remarque qu’il n’y a pas besoin de tronquer la partie décimale binaire.

Par conséquent−32,7510= (−1)11,00000110002×25.

Codage dans la norme IEEE 754 : s = 0,M = 1,0000011000 et l’exposantE = 5 est codé pare = E+ 15 = 2010= 16 + 4 = 101002.

Finalement on concatène les 3 parties, ce qui donne −32,7510= 1 10100 00000110002. 11.On décompose en 1 + 5 + 10 bits que l’on identifie :

s= 1 ; e= 100012 ; M= 1,00111010002

On en déduite= 1710, puis le vrai exposantE=e−15 = 210.

Ainsi le nombre vautx= (−1)1×20+ 2−3+ 2−4+ 2−5+ 2−7×22= (−1)1×22+ 2−1+ 2−2+ 2−3+ 2−5, donc

x=−(4 + 0,5 + 0,25 + 0,125 + 0,03125) donc x=−4,90625.

12.La précision relative minimale est 5×10−4, donc en dessous de cet écart le petit nombre est considéré nul. Voici deux exemples dans lesquels il n’y a pas à considérer en plus d’erreur de troncation lors du changement de base car les développements sont finis :

1,0−1,0 + 0,0001 = 0,00016= 1,0 + 0,0001−1,0 = 0,0 1,5−1,0 + 0,0001 = 0,50016= 1,5 + 0,0001−1,0 = 0,5

2

(2)

PCSI 1 - Stanislas DS d’INFORMATIQUE N2 - 26/03/16 - CORRIGÉ A. MARTIN

III. Représentations graphiques avec Numpy et Matplotlib

13. f r o m n u m p y i m p o r t *

f r o m m a t p l o t l i b . p y p l o t i m p o r t *

def m a _ f l e u r _ 2 D ( n ):

t h e t a = l i n s p a c e (0 ,2* pi , 1 0 0 * n ) R = cos ( n * t h e t a )

p l o t ( R * cos ( t h e t a ) , R * sin ( t h e t a )) s h o w ()

clf () r e t u r n

14. f r o m n u m p y i m p o r t *

f r o m m a t p l o t l i b . p y p l o t i m p o r t *

f r o m m p l _ t o o l k i t s . m p l o t 3 d i m p o r t A x e s 3 D

def m a _ f l e u r _ 3 D ( n , m ):

t h e t a = l i n s p a c e (0 , pi , 1 0 0 * n ) phi = l i n s p a c e ( - pi , pi , 2 0 0 * m ) [ THETA , PHI ] = m e s h g r i d ( theta , phi ) R = cos ( n * T H E T A )* sin ( m * PHI )

X , Y , Z = R * sin ( T H E T A )* cos ( PHI ) , R * sin ( T H E T A )* sin ( PHI ) , R * cos ( T H E T A ) gca ( p r o j e c t i o n =’ 3 d ’). p l o t _ s u r f a c e ( X , Y , Z , c m a p = cm . c o o l w a r m )

s h o w () clf () r e t u r n

3

Références

Documents relatifs

En informatique, le code ASCII associe ` a chaque caract`ere (lettre, chiffre, signe de ponc- tuation. .) un entier compris entre 0 et 255 que l’on appelle son code ASCII.. La

Le but de cette activité est de justifier que le produit de deux nombres de signes contraires est un nombre négatif et que celui de deux nombres négatifs est un nombre positif..

Le but de cette activité est de justifier que le produit de deux nombres de signes contraires est un nombre négatif et que celui de deux nombres négatifs est un nombre positif..

Le but de cette activité est de justifier que le produit de deux nombres de signes contraires est un nombre négatif et que celui de deux nombres négatifs est un nombre positif..

L'aire de la croix est égale à l'aire totale du carré privé de 4 fois l'aire du carré de côté x.. Donc l'aire de la croix vaut 4² −

Ayant aussi voyagé en Égypte, en Syrie, en Sicile, en Provence pour le compte de son père, et rencontré divers mathématiciens, Fibonacci en rapporta à Pise des

En utilisant le code ASCII, écrire vos noms et prénoms sans oublier de mettre les initiales en majuscules (on oubliera les accents et

On admet le résultat suivant, qui est un cas particulier du corollaire du théorème des valeurs intermé- diaires rencontré en terminale.. Il sera démontré