2012-04-29 9 views
1

長さが64ビットを超える整数を格納したい。アプリケーションごとに各エントリが追加されるにつれ、整数あたりのビット数は何百万にも上がります。 そして、そのような64の整数(等しい長さの)に対して、ビット単位のAND演算が行われなければならない。C++で64ビット以上の整数を保存する方法は?

したがって、操作に最適なC++データ構造は時間効率が良いでしょうか? 以前は、長さを動的に増やすことができるように、ベクトルを考慮していました。他のオプションはstd:bitsetを使うことです。

しかし、私はどのようにこれらのアプローチでビットワイズのANDを実行するかわからないので、ほとんどの時間効率的な方法で行われます。

おかげ

+2

いくつかの良い精度精度の整数ライブラリがあります。 – chris

答えて

3

GNU Multiprecision Libraryは、良好な任意精度の整数ライブラリです。これは、コンパイラ/ CPUの仕様に大きく依存している可能性が高いので、まずは最初のスタートとして、それほど高速ではない場合は、独自の実装をロールバックしてください。

0

私はこのアプローチは、メモリ管理に時間を節約し、ビット単位のオペレーション上のいくつかのサイクルを節約と思う大規模なデータを取得する際、ベクターのためのメモリを再割り当てすることは非常に高価であるので、私は

struct int_node{ 
    bitset<256> holder; 
    int_node *next_node; 
} 

を定義します。

関連する問題