Python函数返回最大数目的64位

时间:2019-06-13 17:19:50

标签: python python-3.x math bit

是否有一个python 3函数将返回最大数量的N位?

示例:

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

6 个答案:

答案 0 :(得分:8)

我认为没有内置的,但是编写自己的很容易。 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

答案 1 :(得分:6)

我也不认为有内置的func,但是您可以将其写出来。使用位移(而不是指数)以获得更快的性能:

def largest_bitsize(b):
     return (1 << b) - 1

答案 2 :(得分:5)

怎么样?

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

示例:

>>> int('1'*16, 2)
65535
>>> int('1'*64, 2)
18446744073709551615

答案 3 :(得分:4)

@Kevin的答案由于使用了幂运算符而在时间复杂度上花费了 O(log n)

一种计算n位最大数量的更有效方法是改用按位移位和取反,这会花费 O(1)

def largest_bitsize(n):
    return ~(-1 << n)

答案 4 :(得分:4)

这是一种效率较低的方法:

def largest_bitsize( n ):
   return sum( [ 2 ** i for i in range( n ) ] )

答案 5 :(得分:2)

我认为没有任何内置的可用。但是您可以尝试一下。

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

输出:-

>>> largest_bitsize(64)

18446744073709551615