2012-11-25 2 views
0

Je souhaite effectuer ce calcul sans l'opérateur bit à bit.Effectuer un calcul sans opérateur bit à bit

unsigned result = (1u << 5); 

Le résultat sera 32. Je sais que cela convertir le 1 binaire 100000 mais je voudrais faire la même chose sans opérations au niveau du bit.

+0

'result = 1 non signé; pour (int i = 0; i <5; ++ i) résultat * = 2; ' –

+0

Calcul? Où? Ne devrait-il pas être un calcul? – Annabelle

Répondre

1

Puisque vous savez que 2 est 32, vous pouvez simplement utiliser:

unsigned int result = 1u * 32u; // or just 32u if it's always '1u *'. 

Sinon, si vous voulez juste utiliser la valeur bitshift, il y a deux façons. La première est une boucle:

unsigned result = 1u; 
for (size_t i = 0; i < 5; result *= 2u, i++); 

ou une version non-boucle:

static unsigned int shft[] = {1u, 2u, 4u, 8u, 16u, 32u, ... }; 
unsigned int result = 1u * shft[5]; // or just shft[5] if it's always '1u *'. 
Questions connexes