Bonjour à tous,
Je travaille actuellement sur un projet dont l'explication détaillée ne sera pas utile ici pour comprendre le problème, ceci je vais tout de même préciser d'avantage le contexte :
1/ Nous avons à faire à des ensembles dont les éléments varient entre 1 et 32, ainsi, aucun ensemble ne possèdera la valeur 33 ou 45 ou 0.
2/ Un ensemble possède un nom d'au plus une lettre, non case sensitive ainsi, l'ensemble 'A' contient les mêmes éléments que l'ensemble 'a'.
3/ QQs exemples :
A = { 3, 23 }
b = { }
c = {10, 9, 8, 6 }
etc.
Je dois retenir quel éléments appartiennent à quel ensemble pour que dans la suite, je puisse faire des opération tel que l'union, l'intersection etc. entre les ensembles.
Le type int en C étant codé sur 32 bits (exactement la valeur max d'un élément de l'ensemble), j'ai décidé de représenter ceci sous forme d'un tableau de 26 entiers (26 lettres possibles => 26 cases dans le tableau ).
Ainsi, je voudrais au final utiliser le contenu de mes cases (de types entier) en tant que booléen. Je m'explique, si la valeur 25 est affecté à l'ensemble 'A', je voudrais positionner le bit numéro 25 de la première case du tableau à 1 etc.
Exemple
Etat Initial :
Case 1 du tableau (lettre A) = 00000000000000000000000000000000
Case 2 du tableau (lettre B) = 00000000000000000000000000000000
.
.
.
a = { 3, 12 } => on transforme le bit 2 et 12 dans la case A du tableau et on obtient :
Case 2 du tableau (lettre B) = 00000000000000000000100000000100
.
.
.
Le problème, c'est que je ne sais pas du tout comment accéder au Iième bit d'un entier =/
Quelqu'un peut il m'aider ?
Merci à vous =)
Partager