2017-06-19 11 views
3

私はBASE = 100000000とWIDTH = 8が必要な理由について私は困惑しています。このコードは本のものですが、わかりません。C++ Biginteger、これはどういう意味ですか?

struct Biginteger { 
    static const BASE = 100000000; 
    static const WIDTH = 8; 

    vector<int> s; 
    Biginteger(long long int num = 0) { *this = num; } 
    Biginteger operator=(long long num) { 
    s.clear(); 
    do { 
     s.push_back(num % BASE); 
     num /= BASE; 
    } while (mun > 0); 
    return *this; 
    } 
+0

あなたは 'WIDTH'の使用を実証していません。そのため、目的を推測することができません。参考書は、本のタイトルだけでも役立ちます。また、あなたが理解していないことは明確ではありませんか?特定の値。彼らがどのように使われているか。あなたは彼らがまったく必要ではないと信じますか? –

+0

ありがとうございます。私はあなたのポイントを持っています。 – DeCoder

答えて

2

プリミティブ型は任意の大きな数値を格納することができないため、ここでBigIntegerが必要です。 BigIntegerの考え方は、プリミティブ型で小さな番号のシーケンスを使用して大きな数を表現することです。

BASE=100000000WIDTH=8の場合、元の8桁を8桁で区切ります。たとえば254325623456546については

は、あなたは、単に他の(BASE、WIDTH)に変更することができます(2543256, 23456546)

になります。たとえば、BASE=10,WIDTH=1は、数字の桁を格納することを意味します。たとえば、254325623456546(2, 5, 4, 3, 2, 5, 6, 2, 3, 4, 5, 6, 5, 4, 6)になります。

+0

私はプリミティブ型の限界を指摘し、あなたの答えにいくつかの文脈を与えるために任意に大きな数を格納することができないことを示唆することをお勧めします。 –

+0

@CraigYoung、編集、ありがとう! –

+0

ありがとう、サー!私はこの問題をさらに理解しています。 – DeCoder

関連する問題