DEUG TI 2ème année

Examen d'informatique

première session 98

Durée : 3 heures. Cours et documents distribués en cours autorisés


Première partie


Soit le composant suivant (comportant des portes OU Inclusif et OU Exclusif) :

complémenteur à 2

Ce composant est un "complémenteur à 2" sur 4 bits. Il possède quatre entrées e0 à e3, et cinq sorties. Nous n'utiliserons pas la sortie R.

1.1) Trouvez les quatre équations des sorties s0 à s3, chacune en fonction des entrées e0 à e3 uniquement. Ces équations pourraient-elles conduire à un schéma plus simple ?

1.2) Faites le tableau de Karnaugh de la sortie s3 en fonction des entrées e0 à e3

1.3) Si l'on connecte un à la suite de l'autre deux de ces composants, comme dans la figure ci-contre ; quelles seront les équations des sorties en fonction des entrées ? double complémentation

SECONDE PARTIE


On désire analyser ce "complément à 2" à l'aide d'un programme en C. Nous allons dans un premier temps créer quelques sous-programmes utilitaires.

2.1) Ecrire une fonction dont l'entête sera :

int bit(int nombre, int position)

à qui l'on donne un nombre (entier positif) et une position, cette fonction retourne la valeur (0 ou 1) du bit à la position demandée. La position 0 correspond au bit le plus à droite (dit de poids faible). Donc bit(5,2) doit donner 1 car le bit en position 2 (le 3ème en commençant à la fin) de 101b vaut 1. On utilisera le fait que diviser un nombre par 2 correspond à enlever le dernier chiffre en binaire, et que l'opération % donne le reste de cette division (donc le chiffre enlevé). On arrêtera la boucle quand à force d'enlever des chiffres il reste le nombre 0.

2.2) Utilisez cette fonction bit (même si vous ne l'avez pas écrite) pour écrire un programme qui demande un nombre entier (que vous donnez en décimal), puis affiche ce nombre en binaire.

2.3) Soit un tableau de 16 caractères, contenant 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Ecrivez un fonction (ou si vous n'y arrivez pas, un programme) qui lorsqu'on lui donne (en argument) un nombre entre 0 et 15, affiche sa valeur en hexa. Déclarez et initialisez ce tableau à l'intérieur de la fonction !

2.4) A l'aide des opérations / et % , et à l'aide de la fonction précédente (même si vous ne l'avez pas écrite), affichez n'importe quel entier (plus grand que 15) en hexa. On procédera par divisions successives. Si les chiffres sont affichés à l'envers, ce n'est pas une catastrophe (mais je les préfère dans le bon sens).

2.5) On cherche le complément à 2 d'un nombre entier positif (sur 16 bits). On le représentera par un tableau de 16 entiers. Ecrire le programme qui le recherche. Comme le montre le schéma de la première partie, le bit à droite (poids 0) est inchangé; le suivant (poids 1) vaut 1 si le bit de poids 0 ou le bit de poids 1 vaut 1 (mais pas les deux : donc la somme vaut 1), etc... Le système se répète jusqu'au dernier bit (poids 15). Pour tester le ou inclusif, on peut vérifier que la somme est supérieure ou égale à 1. Le résultat est affiché en binaire, Si vous avez du mal à écrire le programme en C, vous pouvez essayer d'expliquer en français comment vous feriez.

REMARQUES : Vous pouvez répondre aux questions dans l'ordre qui vous convient. Une question peut utiliser le résultat d'une question précédente même si cette question n'a pas été traitée.


vous pouvez voir une correction, dans cette fenêtre ou dans une nouvelle fenêtre
pour retourner au sommaire des sujets d'examen, cliquez ici


Patrick TRAU, ULP - IPST 23/6/98