Leg*_*ooj -4 python math bit python-3.x
是否有将返回最大N位数的python 3函数?
例:
>>> print(largest_bitsize(8))
255
>>> print(largest_bitsize(16))
65535
Run Code Online (Sandbox Code Playgroud)
我不认为它是内置的,但是编写自己的代码很容易。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
Run Code Online (Sandbox Code Playgroud)
我也不认为有内置的func,但是您可以将其写出来。使用位移(而不是指数)以获得更快的性能:
def largest_bitsize(b):
return (1 << b) - 1
Run Code Online (Sandbox Code Playgroud)
这个怎么样?
def largest_bitsize(n):
return int('1' * n, 2)
Run Code Online (Sandbox Code Playgroud)
例子:
>>> int('1'*16, 2)
65535
>>> int('1'*64, 2)
18446744073709551615
Run Code Online (Sandbox Code Playgroud)
@Kevin的答案由于使用了运算符,因此在时间复杂度上花费O(log n)。
一种计算最大位数的更有效方法n是改用按位移位和求反,这需要O(1):
def largest_bitsize(n):
return ~(-1 << n)
Run Code Online (Sandbox Code Playgroud)
小智 6
这是一种效率较低的方法:
def largest_bitsize( n ):
return sum( [ 2 ** i for i in range( n ) ] )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |