Функция Python для возврата максимально возможного числа 64 бит - PullRequest
0 голосов
/ 13 июня 2019

Существует ли функция Python 3, которая будет возвращать наибольшее количество N бит?

Пример:

>>> print(largest_bitsize(8))
255
>>> print(largest_bitsize(16))
65535

Ответы [ 6 ]

8 голосов
/ 13 июня 2019

Я не думаю, что есть встроенный, но достаточно легко написать свой. 2 ^ N - это всегда наименьшее число, для которого требуется N + 1 бит, поэтому (2 ^ N) -1 должно быть наибольшим числом, для которого требуется N бит.

def largest_bitsize(n):
    return 2**n - 1

print(largest_bitsize(8))
#result: 255

print(largest_bitsize(16))
#result: 65535

print(largest_bitsize(64))
#result: 18446744073709551615
6 голосов
/ 13 июня 2019

Я также не думаю, что есть встроенная функция, но вы могли бы ее записать.Используйте битовый сдвиг (в отличие от показателей степени) для еще большей производительности:

def largest_bitsize(b):
     return (1 << b) - 1
5 голосов
/ 13 июня 2019

Как насчет этого?

def largest_bitsize(n):
    return int('1' * n, 2)

Примеры:

>>> int('1'*16, 2)
65535
>>> int('1'*64, 2)
18446744073709551615
4 голосов
/ 13 июня 2019

Вот менее эффективный способ сделать это:

def largest_bitsize( n ):
   return sum( [ 2 ** i for i in range( n ) ] )
4 голосов
/ 13 июня 2019

@ Ответ Кевина стоит O (log n) из-за сложности во времени из-за использования оператора мощности.

Более эффективный способ вычисления наибольшего числа n битвместо этого следует использовать битовое смещение и отрицание, что стоит O (1) :

def largest_bitsize(n):
    return ~(-1 << n)
2 голосов
/ 13 июня 2019

Я думаю, что нет никакого Встроенного в наличии. Но вы можете попробовать это ..

def largest_bitsize(b):
    return (2**b) - 1

Выход: -

>>> largest_bitsize(64)

18446744073709551615
...