Tu veux faire le calcul en dynamique ou statique (pour calculer la taille d'un vecteur par exemple)?
Log2 en static
Code :
function log2( i : natural) return integer is variable temp : integer := i; variable ret_val : integer := 0; begin while temp > 1 loop ret_val := ret_val + 1; temp := temp / 2; end loop; return ret_val; end function;
|
En dynamique il faut un truc un peu plus malin mais ça dépend du besoin (combien de cycles d'horloge tu dispose pour faire le calcul? Combien de place as-tu?)
---------------
sheep++