Python 函数到 return 最大可能数量的 64 位
Python function to return largest possible number of 64 bits
是否有 python 3 函数可以 return 最多的 N
男孩?
示例:
>>> print(largest_bitsize(8))
255
>>> print(largest_bitsize(16))
65535
我认为没有内置的,但是编写自己的很容易。 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
这个怎么样?
def largest_bitsize(n):
return int('1' * n, 2)
示例:
>>> int('1'*16, 2)
65535
>>> int('1'*64, 2)
18446744073709551615
我也不认为有 built-in 函数,但您可以将其写出来。使用位移位(而不是指数)以获得更快的性能:
def largest_bitsize(b):
return (1 << b) - 1
@Kevin 的答案由于使用幂运算符,时间复杂度为 O(log n)。
计算最大 n
位数的更有效方法是使用位移和取反,其成本为 O(1):
def largest_bitsize(n):
return ~(-1 << n)
我认为没有任何 BuiltIn 可用。但是你可以试试这个..
def largest_bitsize(b):
return (2**b) - 1
输出:-
>>> largest_bitsize(64)
18446744073709551615
这是一种效率较低的方法:
def largest_bitsize( n ):
return sum( [ 2 ** i for i in range( n ) ] )
是否有 python 3 函数可以 return 最多的 N
男孩?
示例:
>>> print(largest_bitsize(8))
255
>>> print(largest_bitsize(16))
65535
我认为没有内置的,但是编写自己的很容易。 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
这个怎么样?
def largest_bitsize(n):
return int('1' * n, 2)
示例:
>>> int('1'*16, 2)
65535
>>> int('1'*64, 2)
18446744073709551615
我也不认为有 built-in 函数,但您可以将其写出来。使用位移位(而不是指数)以获得更快的性能:
def largest_bitsize(b):
return (1 << b) - 1
@Kevin 的答案由于使用幂运算符,时间复杂度为 O(log n)。
计算最大 n
位数的更有效方法是使用位移和取反,其成本为 O(1):
def largest_bitsize(n):
return ~(-1 << n)
我认为没有任何 BuiltIn 可用。但是你可以试试这个..
def largest_bitsize(b):
return (2**b) - 1
输出:-
>>> largest_bitsize(64)
18446744073709551615
这是一种效率较低的方法:
def largest_bitsize( n ):
return sum( [ 2 ** i for i in range( n ) ] )