:: Enseignements :: ESIPE :: E3INFO :: 2007-2008 :: Programmation C - Slot 1 ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Manipulation de bits et ensembles |
Dans ce TD, nous implémenterons les opérations sur la manipulation de bits,
puis nous verrons leur application pour les opérations sur les ensembles.
Exercice 1 - Manipulation de bits
-
Ecrire les fonctions de base suivantes :
-
teste_bit qui permet de savoir la valeur d'un des bits d'un octet (char); elle renvoie 0 ou 1.
-
allume_bit qui positionne un bit donné d'un octet à 1.
-
eteint_bit qui positionne un bit donné d'un octet à 0.
-
Ecrire les fonctions suivantes :
-
compte qui reçoit un octet et compte le nombre de bits égaux à 1.
-
est_palindrome qui renvoie 1 ou 0 selon que l'entier passé en paramètre a une représentation binaire palindromique ou non.
Exercice 2 - Ensembles
Un ensemble d'entiers peut être réprésenté comme un tableau de bits.
Chaque indice
i du tableau correspond à l'entier
i ;
la valeur dans le tableau à cet indice est 1 si l'entier appartient à l'ensemble, elle est 0 sinon.
- Définir la structure ensemble qui contient un pointeur vers un tableau d'octets et le nombre d'octets maximum de ce tableau.
- Ecrire les fonctions creer_ensemble et libere_ensemble qui respectivement alloue et libère un ensemble.
- Ecrire une fonction ajoute qui ajoute un entier dans un ensemble.
- Ecrire une fonction affiche_ensemble qui affiche un ensemble.
- Ecrire une fonction appartient qui indique si un entier donné en paramètre appartient à un ensemble.
- Ecrire une fonction cardinal qui renvoie le nombre d'élements de l'ensemble passé en paramètre.
- Ecrire une fonction union qui fait l'union de deux ensembles passés en paramètres.
- Ecrire une fonction intersection qui fait l'intersection de deux ensembles passés en paramètres.
- Ecrire une fonction complementation qui fait la complémentation d'un ensemble passé en paramètre.
- Ecrire une fonction difference qui fait la différence entre deux ensembles passés en paramètres.
- Bonus: Ecrire une fonction diff_sym qui calcule la différence symétrique entre deux ensembles passés en paramètres.
Exercice 3 - Bonus
Ecrire les fonctions de conversion suivantes :
-
str2bin qui reçoit une chaîne de caractères de longueur maximum 8.
Elle vérifie que cette chaîne n'est composée que de 0 ou de 1,
puis renvoie l'entier dont la représentation binaire correspond à la chaîne saisie.
-
bin2str qui reçoit un octet et renvoie une chaîne de caractères le représentant dans sa forme binaire.
- Modifier bin2str pour qu'elle ne retourne que les bits significatifs.
Exemple : l'octet 00101001 peut s'écrire 101001.
© Université de Marne-la-Vallée