Степень числа (q)

Все, что вы хотели знать о программизме, но боялись спросить.
Закрыто
Аватара пользователя
Fisher
Маньяк
Сообщения: 2320
Зарегистрирован: 21 фев 2003, 20:33
Откуда: Toronto - Vancouver

Степень числа (q)

Сообщение Fisher »

чё-та я совсем отупел в пятницу перед отпуском.

Известно, что N - степень двойки.
Выяснить какая именно.
Ясно, что можно побитовым сдвигом посчитать, но это некрасиво,
особенно если разрядность числа велика.

А чё по-другому, без циклов никак нельзя?
Может функция какя есть, или битовое умножение хитрое.
Надо изящно.
spavel
Житель
Сообщения: 662
Зарегистрирован: 10 апр 2006, 13:16
Откуда: Coquitlam

Re: Степень числа (q)

Сообщение spavel »

посмотри в каком бите 1 стоит.
spavel
Житель
Сообщения: 662
Зарегистрирован: 10 апр 2006, 13:16
Откуда: Coquitlam

Re: Степень числа (q)

Сообщение spavel »

а вообще самый короткий код посачета логарифма (подгони под нужный язык) :

Код: Выделить всё

res = 0;
while (x>=2) {
        res += 1
        x /= 2
}
gonzo
Пользователь
Сообщения: 66
Зарегистрирован: 25 авг 2008, 21:15

Re: Степень числа (q)

Сообщение gonzo »

http://graphics.stanford.edu/~seander/bithacks.html
См. Finding integer log base 2 ...
spavel
Житель
Сообщения: 662
Зарегистрирован: 10 апр 2006, 13:16
Откуда: Coquitlam

Re: Степень числа (q)

Сообщение spavel »

кстати, если в используемом языке есть функция логарифма (е), то можно совсем просто.

Log2(X)=lnX/ln2

ln2 посчитай на калькуляторе - это константа.
Аватара пользователя
Fisher
Маньяк
Сообщения: 2320
Зарегистрирован: 21 фев 2003, 20:33
Откуда: Toronto - Vancouver

Re: Степень числа (q)

Сообщение Fisher »

Всем спасибо, все свободны. :D
Закрыто