在Python中获取64位整数

14 投票
2 回答
77580 浏览
提问于 2025-04-17 09:15

我在考虑用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。

撰写回答