Дано 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). Я просто хочу знать поведение логарифма.

Ответы на вопрос(0)

Ваш ответ на вопрос