J'ai un tableau de neuf éléments et un nombre entier. En utilisant l'entier et le masquage de bit, je veux enregistrer des informations sur la validité d'un élément du tableau. Donc, ma question est: Y at-il un moyen plus simple que d'utiliser log2() de math.h pour obtenir de mon masque de bit à mon numéro d'élément de tableau? Par exemple, je stocke foo2,
foo4
et foo5
en mValue
en utilisant le masquage de bit. Ensuite, je veux obtenir l'élément de tableau à la position foo2 = 2
, qui est le deuxième bit, de sorte que le 2e élément de tableau, qui est 34
. Mais la seule façon dont je peux penser est la fonction log2(n)
. Y a-t-il un plus simple utilisant le transfert de bits peut-être?Façon simple d'obtenir le nième élément de tableau quand tout ce que j'ai est n^2
Tout simplement, je veux faire:
Est-ce le n-ième bit d'un nombre entier mValue
mis à 1? alors obtenez-moi le nième élément d'un tableau bar
.
#include <math.h>
const int foo1 = 1;
const int foo2 = 2;
const int foo3 = 4;
const int foo4 = 8;
const int foo5 = 16;
int bar[9] = {23,34,82,8,7,0,23,19,20};
int mValue;
void SetValue(int nVal)
{
mValue = nVal;
}
bool IsElementValid(int nVal)
{
return mValue & nVal;
}
int main()
{
SetValue(foo2 | foo4 | foo5);
IsElementValid(foo4); //true
IsElementValid(foo5); //true
IsElementValid(foo1); //false
//access array element 1 with value foo2 (2)
if(IsElementValid(foo2))
printf("%d\n", bar[log2(foo2)]); // output: '34'
}
[cette question et réponses] (http://stackoverflow.com/questions/757059/position-of-least-significant-bit-that-is-set) pourraient vous être utiles – mvidelgauz