检查没有符号的大整数值的类型

时间:2011-12-13 09:10:46

标签: python

有这段代码:

print isinstance(2147483647, int) # True - max signed 32-bit integer
print isinstance(4294967295, int) # False - max unsigned 32-bit integer
print isinstance(18446744073709551615, int) # False - max unsigned 64-bit integer

如何检查值是否为无符号32位整数和无符号64位整数?

3 个答案:

答案 0 :(得分:5)

如果您只想检查数字是否适合32位整数或64位整数,则可以使用一种名为bit-length的方法来检查并确定结果是否小于32。< / p>

对于前。

>>> def Is32or64(x):
    return 32 if x.bit_length() < 32 else 64

>>> Is32or64(2**30)
32
>>> Is32or64(2**40)
64 

答案 1 :(得分:2)

您无法检查无符号整数类型,因为没有无符号整数类型。

Python 2有两种类型的整数:int(固定范围,平台相关,至少32位)和long(无限大整数)。两者都签了。

在您的示例中,第一个值的类型为int,另外两个值为long。如果您想知道某个值是否适合64位整数的范围,请进行普通比较:

if (x >= 0) and (x < 2**64):
    pass

从Python版本2.7和3.1开始,有int.bit_length()方法计算数字的二进制表示有多少位,忽略符号。

答案 2 :(得分:0)

您可以使用2**x

2147483647 == 2**32
18446744073709551615 == 2**64
相关问题