大整數類的四則運算和邏輯運算

2021-07-23 22:15:49 字數 1283 閱讀 4352



今天看了《演算法競賽和入門基礎》中的大整數類後,我自己也試著去實現乙個大整數類,並且完成了整數的四則運算和邏輯運算功能。學習到了很多東西。在此分享一下。**是c++的。用了c++中的stl模板類vector。

大整數類的資料儲存結構如下所示:

static const int base=100000000;

static const int width=8;

std::vectors;

下面我在書裡原有的基礎上繼續編寫了乘除和減法的**。

class biginteger

//long long型整數賦值方法

biginteger operator = (long long num)

while(num);

return *this;

}

//string型別賦值方法

biginteger operator = (const std::string &str)

int m=2*max;

while(temp[m]==0)

m--;

biginteger another;

another.s.clear();

int len=(m-1)/width+1;

for(int i=0;i=0;i--)

ss<=0;i--)

ssfor(int i=0;id[j]) //第一次大就表示operand1 > operand2

else if(c[i+j]=0;i--)

if(s[i]!=b.s[i])

return s[i](const biginteger& b) const

bool operator <= (const biginteger& b) const

bool operator >= (const biginteger& b) const

bool operator == (const biginteger& b) const

friend std::ostream& operator << (std::ostream& out,const biginteger& x)

};

全部貼出來是因為我太懶了,見諒啊。
大整數類除了這個實現,如果大家還有其他實現方法,不妨也分享一下,這裡寫出來只是拋磚引玉。

大整數四則運算

儲存方式 規定 整數的高位儲存在陣列的高位,整數的低位儲存在陣列的低位。例如 235813,則d 0 3,d 1 1,d 2 8.此方式以此類推。但注意 通常輸入為字串str 0 2 str 1 3 str 2 5 讀入之後需要反轉一下。加法運算 模板 include include struct ...

大整數四則運算

電腦可以處理很大的數。但是更大的數字運算由於資料型別占有的有限並不能表示出來,所以需要對很大的數字進行大整數處理,光是聽著就感覺令人心潮澎湃呢。核心思想 陣列存數,乙個單元存一位 下面是大整數儲存,比較的模板 struct bign bign change char str return a 比較兩...

大整數的四則運算

由小學時候的加法運算可以歸納出對其中一位進行加法的步驟 將該位上的兩個數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。高精度加法的做法與此完全相同,可以直接來看實現的 程式 include include 定義乙個結構體儲存大整數 struct bign 將整數轉換為bign ...