Bonjour, Voilà mon problème:
je dois faire un tableau de bits avec lecture/écriture la taille du tableau est variable, et la limite haute de taille nes pas spécialement définie, mais disons 1000000 pour l'exemple....
du coup le fais une allocation du style:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
static const unsigned char bits_in_char =8;
 
unsigned char* allocate(unsigned int taille) {
  return (unsigned char*)malloc(taille/bits_in_char + 1);
}
pour les fonctions de lecture/écriture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
bool get_bit(unsigned char* tab,unsigned int index){
  unsigned int kn,in;
  kn=(index+bits_in_char-1)/bits_in_char;
  in=(index-1)%bits_in_char;
  return (1 & (tab[kn] >> in));
}
 
void set_bit(unsigned char* tab,unsigned int index,bool val){
  unsigned int kn,in;
  kn=(index+bits_in_char-1)/bits_in_char;
  in=(index-1)%bits_in_char;
  if (val)
    tab[kn]= tab[kn] | (1 << in);
  else
    tab[kn]= tab[kn] & ~(1 << in);
}
Mon soucis c'est que ces fonctions (surtout la lecture) sont appelée un très grand nombre de fois. Et je constate que c'est lent!

Est-ce qu'il y a un meilleur moyen de définir/lire/écrire un tableau de bits?