2011-12-30 18 views
3

私はPythonまたはLispでビットボードを書くことを考えています。しかし、私はどのように私はPythonで64ビットの整数を得ることを確認するか分からない。私はドキュメントを読んでいて、mpzライブラリが符号なし32ビット整数を返すことを発見しました。これは本当ですか?もし私が何をすればいいのですか?Pythonで64ビット整数を取得する

+0

「食器棚」とはどういう意味ですか?何ビットが本当に必要ですか?あなたの問題を解決するのに役立つ64ビット整数の特別な点は何ですか?あなたは正確に何をしようとしていますか? –

+1

ビット・ツイリングをしたい場合、Pythonは操作が少数のCPU算術命令にコンパイルされないので、非常に貧しい選択です。 –

答えて

2

gmpyを使用して2つのオプションがあります。ここで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を維持しています。

+0

ビット配列はmpzと同じくらい速いですか? – Mark

+0

私はパフォーマンスをビット配列と比較しませんでした。上記の例では、xmpzビットのアクセスはmpzの約2倍です。 – casevh

18

Python 2には、サイズがマシンのワードサイズに等しい(ただし常に32ビット以上)符号付き整数intと、サイズが無制限のlongという2つの整数型があります。

Python 3には整数型が1つしかありません。これはintと呼ばれますが、Python 2 longに相当します。

+0

これはあなたの質問に答えますか? – Taymon

+1

基本的に私はチェス盤を表すのに64ビットが必要です。私はいくつかのプログラムのソースコードを読んでいて、mpzを使っています。しかし、残念ながら、それは非常にうまく文書化されていません。私が64ビットで整数を保存したいのであれば、どうすればよいですか?例を挙げていただけますか? – Mark

+0

@マークあなたは時代遅れのコードをいくつか見ています。 [PEP 4](http://www.python.org/dev/peps/pep-0004/)から:mpzモジュールは、Python 2.2以降、古いものとして文書化されています。 Python 2.4のライブラリ参照から削除されました。 –

関連する問題