1024位大數運算 一

2021-08-25 02:14:09 字數 1276 閱讀 7016

近來剛完成了1024位大數運算,拿出來跟大家分享一下。有什麼不對的地方希望大家指出來,感激不盡。。。

#definemaxlength(1024)//最大位數1024*8

#definep0//為正數

#definen1//為負數

#defineupperbound100000000//進製

class bigint

;//-------------------------建構函式-----------------------------------

bigint::bigint()

bigint::bigint(char* str)

bigint::bigint(unsigned long num)

//-------------------------設定成員變數的函式----------------------------

void bigint::zero()

void bigint::set(unsigned long num)

void bigint::set(bigint a)

bool bigint::equlzero()

//將字串str轉換為大數

bool bigint::getbigint(char* str)

else

//去掉開頭多餘的零

while( (str[i] == '0')&&(iset(0);

return true;

}//確定大數的長度,陣列的每個元素可以表示8位的整數

if( length%8 == 0 )

this->m_nlength = length/8;

else

this->m_nlength = length/8 + 1;

for(;i='0')&& (str[i] <= '9'))

add(str[i]-'0');

else

}return true;

}//將大數轉換為字串

void bigint::putbigint(char* str)

int k = 0;

_int64 km = 0;

char* temp = new char[this->m_nlength*8];

for(int i=0; im_nlength; i++)

else}}

//將temp中倒序儲存的字元逆序放入str中

if(this->m_bsign == n)

else

str[i] = '/0';

1024位大數運算(二)

求模運算 呼叫除法 int bigint mod int64 x 比較兩個大數的大小 只用於比較兩個同號的大數 bool bigint comp bigint bi else 加法 bigint bigint add bigint addend else return sum 符號相同 sum.m ...

大數運算 1 大數儲存

int 16位 32768 32767 注 現在大多數的編譯器的int型是32位的 也就是說跟long型的大小一樣 long long或 int64 64位 9223372036854775808 9223372036854775807 float 32位 精確到小數點後6 7位 double 64...

大數運算 4 大數乘法

首先說一下乘法計算的演算法 同樣是模擬人工計算時的方法。從低位向高位乘,在豎式計算中,我們是將乘數第一位與被乘數的每一位相乘,記錄結果之後,用第二位相乘,記錄結果並且左移一位,以此類推,直到計算完最後一位,再將各項結果相加,得出最後結果。計算的過程基本上和小學生列豎式做乘法相同。為程式設計方便,並不...