在Python中获取64位整数
我在考虑用Python或Lisp写一个位棋盘(bitboard)。但是我不知道怎么确保在Python中能得到一个64位的整数。我查了一些文档,发现mpz库返回的是一个无符号的32位整数。这是真的吗?如果不是,我该怎么办?
2 个回答
37
Python 2 有两种整数类型:int
,这是一个有符号的整数,大小和你电脑的字长有关(但至少是32位);还有一种是long
,它的大小没有限制,可以非常大。
而在 Python 3 中,只有一种整数类型,叫做 int
,但它的功能和 Python 2 中的 long
是一样的,可以表示很大的整数。
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。