在python中获得64位整数

Mar*_*ark 6 python integer bit

所以我想在python或lisp中编写一个位板.但我不知道如何确保我在python中获得64位整数.我一直在阅读文档,发现mpz库返回一个无符号的32位整数.这是真的?如果不是我该怎么办?

Tay*_*mon 24

Python 2有两种整数类型:int它是一个有符号整数,其大小等于机器的字大小(但始终至少为32位),并且long大小不受限制.

Python 3只有一个整数类型,它被调用int但相当于Python 2 long.

  • 基本上我需要 64 位来表示棋盘。我一直在阅读一些程序的源代码,他们使用 mpz。但不幸的是,它没有被很好地记录下来。如果我想以 64 位存储整数,我应该怎么做?你能举个例子吗? (2认同)

cas*_*evh 3

使用gmpy有多种选择。下面是一个使用 gmpy 的示例:

>>> from gmpy import mpz
>>> a=mpz(7)
>>> bin(a)
'0b111'
>>> a=a.setbit(48)
>>> bin(a)
'0b1000000000000000000000000000000000000000000000111'
>>> 
Run Code Online (Sandbox Code Playgroud)

gmpy2 是 gmpy 的开发版本,包含一个名为 xmpz 的新类型,它允许更直接地访问位。

>>> from gmpy2 import xmpz
>>> a=xmpz(7)
>>> bin(a)
'0b111'
>>> a[48]=1
>>> bin(a)
'0b1000000000000000000000000000000000000000000000111'
>>> 
Run Code Online (Sandbox Code Playgroud)

您可能还想了解其他解决方案,例如位数组。

免责声明:我维护 gmpy 和 gmpy2。