[C] calculer un puissance

calculer un puissance [C] - C - Programmation

Marsh Posté le 26-02-2007 à 09:20:18    

Bonjour,
J'ai fait une petite une fonction bloc_size() retournant un int. Maintenant je voudrais faire une autre petite fontion permettant de calculer la puissance de 2 de la taille de l'int. Par exemple si bloc_size retourne 20 je veut trouver la puissance de 2 pouvant contenir 20. Donc 32 = 2^5.
 
 
Merci??


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 26-02-2007 à 09:20:18   

Reply

Marsh Posté le 26-02-2007 à 09:45:43    

De rien.[:dawa]
 
C'est plutôt l'algo que du C que tu cherches, non?:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-02-2007 à 09:49:51    

skeye a écrit :

De rien.[:dawa]
 
C'est plutôt l'algo que du C que tu cherches, non?:o


 
Oui vaoia tu as tout compris lol


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 26-02-2007 à 10:40:42    

Non portable et tjs amusant
 

Code :
  1. int bar(const int value)
  2. union foo_t {
  3.  float f;
  4.  uint32_t u;
  5. } foo;
  6. foo.f = value;
  7. const int32_t l = int32_t((foo.u >> 23) & 0xFF) - 127;
  8. return foo.u & ((1<<23)-1) ? l+1 : l;
  9. }


 
Edit: Zut, c'est la catégorie C.


Message édité par tbp le 26-02-2007 à 10:42:31
Reply

Marsh Posté le 26-02-2007 à 11:12:37    

Voila cette fontion retourne la puissance de 2 nombre :
 
int my_power(int nb, int pow)
{
  int i;
  int res;
 
  i = 0;
  res = 1;
  while (i < pow)
    {
      res = nb * res;
      i++;
    }
  my_putnbr(res);
  return (res);
}
 
par exemple jai my_power(2, 5) le resultat sera 32. Moi je veux faire l'inverse. Je voudrais justement trouver le chiffre 5 (2eme parametre) en fonction d'un nombre. Par exemple si on tape find_nb_pow(16), la fonction me renvoie (4 soit 2^4) Comment faire?? Please.
Merci.


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
Reply

Marsh Posté le 26-02-2007 à 11:14:00    

C'est hyper simple à faire sur le même schéma que la fonction que tu viens de poster.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-02-2007 à 11:17:44    

Psst, c'est aussi ce que fait ma fonction bar, en temps constant.

Reply

Marsh Posté le 26-02-2007 à 11:19:23    

tbp a écrit :

Psst, c'est aussi ce que fait ma fonction bar, en temps constant.


 
oui, mais ta fonction elle pique les yeux, je pense, pour un débutant.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-02-2007 à 11:31:57    

Pfff, de toute façon j'avais embarqué le bit de signe avec l'exposant ('& 0x7F' pas '& 0xFF') :)
Edit: demain j'arrête la colle; ne pas tenir compte de ce post.


Message édité par tbp le 26-02-2007 à 12:00:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed