Tester si un tableau est une puissance de 2

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 554 fois - Téléchargée 30 fois

Contenu du snippet

Permet de voir si un de algorithme est une puissance de 2. Ce qui permet d'utiliser des algorithme de transformations rapides tels que les ondelettes ou FFT.

Source / Exemple :


bool CxImage::IsPowerof2(long x)
{
	long i=0;
	while ((1<<i)<x) i++;
	if (x==(1<<i)) return true;
	return false;
}

A voir également

Ajouter un commentaire

Commentaires

lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
exact mais je m'en sers pour le traitement d'image qui font 1 GO en taille.

donc elle font rarement mais de 128 de résolutions
Hylvenir
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2 -
Argh, j'ai qu'un UltraSparc sous la main (qui tombe en ruine).
Et tu n'a pas de différence de perf ? étrange, mais je n'insiste pas.

Autre point à explorer sur le sujet.
Ta méthode est boguée ;-)
imaginons que nous n'ayons que des octets à dispo (8 bits)
soit le 0 - 255. 2^7 -> 128, si tu appelles ta fonction avec
un nombre supérieur à 128, tu vas avoir 128 < x, tu vas shifter
une fois de plus or 2^8->dépassement tu retombres à 0, et tu bloucles. (1<<8)0, (1<<9) 0,...
Le même raisonnement est applicable pour les longs.
Sauf erreur de ma part évidement.
lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
je compile le gcc sur une station sunblade
Hylvenir
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2 -
regarde l'assembleur généré, tu verras bien comment le code
est optimisé dans les deux cas.
Je n'ai pas trouvé un compilo me donnant la même performance
pour les deux codes.
Sauf peut être le tien. (j'ai pas encore VC .NET 2003, je ferai
les tests avec celui-là aussi).
lpikachu58
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
2 -
oui mais le compilo il vire les variables temporaires. Elles ne sont jamais un frein au temp-réel. La bouble for que tu propose à la meme complexité puisque qu'il y a des tests conditionnels dans la structures for

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.