2017-06-19 64 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(2543256, 23456546)

你可以簡單地切換到其他(BASE,寬度)。例如,BASE=10WIDTH=1表示您正在存儲數字的數字。例如,254325623456546將是(2, 5, 4, 3, 2, 5, 6, 2, 3, 4, 5, 6, 5, 4, 6)

+0

我建議指出的不能夠任意大量存儲,以便給你的答案一些背景原始類型的限制。 –

+0

@CraigYoung,編輯,謝謝! –

+0

謝謝,先生!我已經進一步瞭解這個問題。 – DeCoder