Длина в битах положительного целого числа в Python

Вы должны переопределить метод toString() в вашем классе Box:

class Box {
     private final int height;

     public Box(int h){
         height = h;
     }

     @Override
     public String toString(){
         return Integer.toString(height);
     }
}

Поскольку реализация по умолчанию наследуется классом Object (базовый класс для каждого объекта в Java) , который выглядит следующим образом:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Обратите внимание, что это не печать адреса памяти, а шестнадцатеричное представление хеш-кода, возвращаемого hashcode() -методом

41
задан Maarten Bodewes 23 March 2017 в 22:10
поделиться

4 ответа

Здесь, мы можем также использовать разрезание:

len(bin(1)[2:])
len(bin(5)[2:])
len(bin(10)[2:])
len(bin(100)[2:])
len(bin(1000)[2:])

, который распечатал бы:

1
3
4
7
10
1
ответ дан 27 November 2019 в 00:05
поделиться

В python 2.7+ есть метод int.bit_length () :

>>> a = 100
>>> a.bit_length()
7
171
ответ дан 27 November 2019 в 00:05
поделиться
>>> len(bin(1000))-2
10
>>> len(bin(100))-2
7
>>> len(bin(10))-2
4

Примечание : не работает для отрицательных чисел, возможно, потребуется вычесть 3 вместо 2

{{1} }
23
ответ дан 27 November 2019 в 00:05
поделиться
def bitcounter(n):
    return math.floor(math.log(n,2)) + 1

РЕДАКТИРОВАТЬ исправлено, теперь он работает с 1

-1
ответ дан 27 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: