是否有一个python 3函数将返回最大数量的N
位?
示例:
>>> print(largest_bitsize(8))
255
>>> print(largest_bitsize(16))
65535
答案 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