21

非常に大きな数を扱うのに助けが必要です。Windows calc によると、指数は

174^55 = 1.6990597648061509725749329578093e+123 

C(c99標準)を使用してこれをどのように保存しますか?

int main(){
  long long int x = 174^55; //result is 153
  printf("%lld\n", x);
}
4

3 に答える 3

31

通常、C の通常の型は最大 64 ビットしか格納できないため、たとえば大きな数値を配列に格納し、数学演算を自分で作成する必要があります。しかし、ここで車輪を再発明するべきではありません。この目的のために、 GNU Multiple Precision Arithmetic Libraryを試すことができます。

コメントがすでに指摘しているように、^操作はバイナリ XOR です。累乗には、 のような数学関数を使用する必要がありますpow

于 2010-04-14T20:06:45.723 に答える
5

近似に問題がなければ、浮動小数点数 (floatまたはdouble) を使用できます。そして、コメンテーターが言ったように、powではなくが必要です。^

ただし、暗号化の場合、近似は機能しません。非常に大きな整数を使用した算術演算のサポートが必要です。GMP は、一般的な多倍精度演算サポートを提供します。多くの暗号化パッケージには、サードパーティのライブラリまたは組み込みのいずれかを介して、コードにそのようなアルゴリズムも含まれます。PuTTY には大きな整数用の bignum ライブラリがあり、OpenSSL にはおそらく似たようなものがあります。

基本的な C データ型では不十分です。

于 2010-04-14T20:08:54.563 に答える
3

整数の配列に格納できます。64 ビット整数は、ちょうど 2 つの 32 ビット整数です。1024 ビット整数は、32 個の 32 ビット整数と見なすこともできます。

于 2010-04-14T20:09:42.723 に答える