000
13.05.2007, 18:46 Uhr
Matthias Fischer
|
hi leute!
hab ein problem! hab folgendes programm programmiert, und zwar, dass zwei 256bit zahlen addiert werden, nun will ich die gerne modulo rechnen. das problem für mich ist, dass ich jedes bit in nem array-element speichere wie ihr seht. wie könnt ich die modulo-operation nun angehen? ich will keinen %-operator verwenden, sondern per hand das ausprogrammiern! wär toll, wenn jemand antworten könnt, der ne möglichkeit sieht das zu implementieren! danke schon mal!
mein programm bis jetzt:
C++: |
#include <iostream> #include <math.h> using std::cout; using std::endl; class BigInt { protected: int zahl1[256]; int zahl2[256]; int erg[512]; public: BigInt(void); double add(); int clean_vars(); int set_vars(); }; BigInt::BigInt(void) { clean_vars(); set_vars(); } int BigInt::clean_vars() { for(int i = 0; i < 256; i++) { zahl1[i] = 0; zahl2[i] = 0; } for(int j = 0; j < 512; j++) erg[j] = 0; set_vars(); return (0); } int BigInt::set_vars() { // 8870 zahl1[13] = 1; zahl1[12] = 0; zahl1[11] = 0; zahl1[10] = 0; zahl1[9] = 1; zahl1[8] = 0; zahl1[7] = 1; zahl1[6] = 0; zahl1[5] = 1; zahl1[4] = 0; zahl1[3] = 0; zahl1[2] = 1; zahl1[1] = 1; zahl1[0] = 0; // 3 zahl2[3] = 0; zahl2[2] = 0; zahl2[1] = 1; zahl2[0] = 1; return (0); } double BigInt::add() { for(int i = 0; i < 256; i++) { erg[i] += zahl1[i] + zahl2[i]; if(erg[i] == 2) { erg[i] = 0; erg[i + 1] = 1; } } //Convert Bin->Dec double j = 0; for(int a = 0; a < 256; a++) j += (pow(2,a) * erg[a]); return j; } int main(int argc, char *argv) { BigInt bi; cout << "Zahlen: 8870 und 3" << endl; cout << "Addition: " << bi.add() << endl; return (0); }
|
Dieser Post wurde am 13.05.2007 um 18:47 Uhr von Matthias Fischer editiert. |