Дано 2 ^ n, найти n, используя логарифм
Учитывая целое число (2 ^ n), которое является степенью 2, я хочу узнать n, значение индекса, используя логарифм. Формула для поиска индекса: log (число) / log (2). Ниже приведен фрагмент кода:
unsigned long int a;
double apower;
apower = log((double)a) / log((double)2);
Я обнаружил, что значение 'apower' неверно при некотором большом значении a, я не знаю значение, так как мой код завершается ошибкой после его отправки. Почему это так? Есть ли проблема с кастингом?
Ниже приводится весь фрагмент:
int count = 0;
unsigned long int a,b;
double apower,bpower;
apower = log((double)a) / log((double)2);
bpower = log((double)b) / log((double)2);
count = abs(apower - bpower);
printf("%d\n",count);
Значения a и b всегда будут степенью 2. Таким образом, aower и bpower должны иметь 00 в десятичных разрядах. Поэтому значение count будет int (% d). Я просто хочу знать поведение логарифма.