чё-та я совсем отупел в пятницу перед отпуском.
Известно, что N - степень двойки.
Выяснить какая именно.
Ясно, что можно побитовым сдвигом посчитать, но это некрасиво,
особенно если разрядность числа велика.
А чё по-другому, без циклов никак нельзя?
Может функция какя есть, или битовое умножение хитрое.
Надо изящно.
Степень числа (q)
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- Fisher
- Маньяк
- Сообщения: 2320
- Зарегистрирован: 21 фев 2003, 20:33
- Откуда: Toronto - Vancouver
-
- Житель
- Сообщения: 662
- Зарегистрирован: 10 апр 2006, 13:16
- Откуда: Coquitlam
Re: Степень числа (q)
посмотри в каком бите 1 стоит.
-
- Житель
- Сообщения: 662
- Зарегистрирован: 10 апр 2006, 13:16
- Откуда: Coquitlam
Re: Степень числа (q)
а вообще самый короткий код посачета логарифма (подгони под нужный язык) :
Код: Выделить всё
res = 0;
while (x>=2) {
res += 1
x /= 2
}
-
- Пользователь
- Сообщения: 66
- Зарегистрирован: 25 авг 2008, 21:15
Re: Степень числа (q)
http://graphics.stanford.edu/~seander/bithacks.html
См. Finding integer log base 2 ...
См. Finding integer log base 2 ...
-
- Житель
- Сообщения: 662
- Зарегистрирован: 10 апр 2006, 13:16
- Откуда: Coquitlam
Re: Степень числа (q)
кстати, если в используемом языке есть функция логарифма (е), то можно совсем просто.
Log2(X)=lnX/ln2
ln2 посчитай на калькуляторе - это константа.
Log2(X)=lnX/ln2
ln2 посчитай на калькуляторе - это константа.
- Fisher
- Маньяк
- Сообщения: 2320
- Зарегистрирован: 21 фев 2003, 20:33
- Откуда: Toronto - Vancouver
Re: Степень числа (q)
Всем спасибо, все свободны. 
