所以我想在python或lisp中编写一个位板。但我不知道如何确保我在python中获得64位整数。我一直在阅读文档,发现mpz库返回一个无符号的32位整数。这是真的?如果不是我该怎么办?
答案 0 :(得分:22)
Python 2有两种整数类型:int
,它是一个有符号整数,其大小等于机器的字大小(但始终至少为32位),long
,大小不限
Python 3只有一种整数类型,称为int
,但相当于Python 2 long
。
答案 1 :(得分:3)
您可以使用gmpy选择几个选项。以下是使用gmpy的一个示例:
>>> from gmpy import mpz
>>> a=mpz(7)
>>> bin(a)
'0b111'
>>> a=a.setbit(48)
>>> bin(a)
'0b1000000000000000000000000000000000000000000000111'
>>>
gmpy2是gmpy的开发版本,包含一个名为xmpz的新类型,允许更直接地访问这些位。
>>> from gmpy2 import xmpz
>>> a=xmpz(7)
>>> bin(a)
'0b111'
>>> a[48]=1
>>> bin(a)
'0b1000000000000000000000000000000000000000000000111'
>>>
您可能需要查看其他解决方案,例如bitarray。
免责声明:我保持gmpy和gmpy2。