Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数返回最大可能的64位数_Python_Python 3.x_Math_Bit - Fatal编程技术网

Python函数返回最大可能的64位数

Python函数返回最大可能的64位数,python,python-3.x,math,bit,Python,Python 3.x,Math,Bit,是否有一个python 3函数将返回最大数量的N位 例如: >打印(最大位(8)) 255 >>>打印(最大_位大小(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:

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

例如:

>打印(最大位(8))
255
>>>打印(最大_位大小(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

我也不认为有内置函数,但你可以把它写出来。使用位移位(与指数相反)可获得更快的性能:

def largest_bitsize(b):
     return (1 << b) - 1
def最大\u位大小(b):
return(1@Kevin的答案由于使用power操作符而在时间复杂度上花费O(logn)

计算最大
n
位数的一种更有效的方法是使用按位移位和求反,其代价为O(1):

def最大\u位大小(n):

return-1我想没有任何内置的。但是你可以试试这个

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

我不知道int()有一个基参数。不,没有。这个答案比@Kevins answer快。谢谢!Python允许你像那样移动负数吗?语言允许吗,或者它只是碰巧在这个实例中工作?(它似乎依赖于表示,而且似乎不可移植).@jww这是负数的二进制系统的工作原理。它在任何地方都是可移植的。请参阅和中的演示。@jww Python语言故意使这成为可能。这种行为并不是来自内部表示——事实上,CPython中的内部表示是符号大小,因此CPython必须付出额外的努力来完成这项工作“正确的事情”,表现得好像使用了某种形式的无限二的补码。@jww:相关文档:。“按位运算的结果被计算出来,就像是在具有无限个符号位的二的补码中执行一样。”(顺便说一句,我通常将其拼写为
~(~0)虽然效率较低,但它很好地说明了python的一些功能。
def largest_bitsize( n ):
   return sum( [ 2 ** i for i in range( n ) ] )