Как принять обратный 2 рейз к чему-то в python2.5 (строгое) - PullRequest
0 голосов
/ 19 марта 2011

У меня есть номер, скажем 37.37 лежит между 2**5 and 2**6.Я хочу написать функцию, которая принимает число в качестве аргумента и возвращает мощность своих нижних границ.

def foo(x=37)
{
 result =//Here calculation
 return result
}

В приведенном выше примере возвращаемое значение должно быть 5, поскольку его нижний предел равен 2**5 and 5.его сила.

Примечание: Должен заботиться о питоне 2.5

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 19 марта 2011
import math
def hi_bit(num):
        return int(math.log(num, 2))

Целочисленная усеченная функция журнала base-2 даст вам индекс наибольшего установленного бита.Этот индекс N является нижней границей показателя степени 2 для числа, поскольку он должен быть больше или равен 2**N

0 голосов
/ 19 марта 2011

Вы можете использовать логарифм с основанием 2:

result = math.floor(math.log(x, 2))
...