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 ) ] )