Como fazer um inteiro log2 () em C +

Nas bibliotecas padrão C ++, encontrei apenas um método de log de ponto flutuante. Agora eu uso o log para encontrar o nível de um índice em uma árvore binária floor(2log(index))).

Code (C ++):

int targetlevel = int(log(index)/log(2));

Receio que, para alguns dos elementos da aresta (os elementos com valor 2 ^ n), o log retorne n-1.999999999999 em vez de n.0. Esse medo está correto? Como posso modificar minha declaração para que ela sempre retorne uma resposta correta?

questionAnswers(30)

yourAnswerToTheQuestion