получить 64-битное целое число в Python - PullRequest
5 голосов
/ 30 декабря 2011

Так что я думаю о написании битборда на python или lisp. Но я не знаю, как гарантировать, что я получу 64-битное целое число в Python. Я читал документацию и обнаружил, что библиотека mpz возвращает 32-разрядное целое число без знака. Это правда? Если нет, что мне делать?

Ответы [ 2 ]

22 голосов
/ 30 декабря 2011

Python 2 имеет два целочисленных типа: int, которое является целым числом со знаком, размер которого равен размеру слова вашей машины (но всегда не менее 32 бит), и long, который не ограничен в размере.

Python 3 имеет только один целочисленный тип, который называется int, но эквивалентен Python 2 long.

3 голосов
/ 30 декабря 2011

У вас есть несколько вариантов использования 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.

...