X-Git-Url: https://mattmccutchen.net/bigint/bigint.git/blobdiff_plain/00c6448a6c5fc7a68427ca1dc3f5f523563e1041..a8e1d2a44f8c5815d641a46caadf04c6ef732f45:/sample.cc diff --git a/sample.cc b/sample.cc index 9a75175..58e5a42 100644 --- a/sample.cc +++ b/sample.cc @@ -19,7 +19,7 @@ int main() { try { BigInteger a; // a is 0 int b = 535; - + a = b; // From int to BigInteger... b = a; // ...and back, no casts required! /* @@ -31,27 +31,27 @@ int main() { * a special command-line option to compile code that uses * exceptions. */ - + BigInteger c(a); // Copy a BigInteger. - + // d is -314159265. The `int' literal is converted to a // BigInteger. BigInteger d(-314159265); - + // This won't compile because the number is too big to be an // integer literal. //BigInteger e(3141592653589793238462643383279); - + // Instead you can convert the number from a string. std::string s("3141592653589793238462643383279"); BigInteger f = easyStringToBI(s); - + // You can convert the other way too. std::string s2 = easyBItoString(f); - + // f is stringified and send to std::cout. std::cout << f << std::endl; - + /* * Let's do some math! * @@ -62,10 +62,17 @@ int main() { * ``put-here operations''; see `BigUnsigned.hh' for details. */ BigInteger g(314159), h(265); - // All five ``return-by-value'' operators. + // All five ``return-by-value'' arithmetic operators. std::cout << (g + h) << '\n' << (g - h) << '\n' << (g * h) << '\n' << (g / h) << '\n' << (g % h) << std::endl; - + + BigUnsigned i(0xFF0000FF), j(0x0000FFFF); + // All five ``return-by-value'' bitwise operators. + std::cout.flags(std::ios::hex | std::ios::showbase); + std::cout << (i & j) << '\n' << (i | j) << '\n' << (i ^ j) << '\n' + << (j << 21) << '\n' << (j >> 10) << '\n'; + std::cout.flags(std::ios::dec); + // Let's do some heavy lifting and calculate powers of 314. int maxPower = 10; BigUnsigned x(1), big314(314); @@ -73,18 +80,18 @@ int main() { std::cout << "314^" << power << " = " << x << std::endl; x *= big314; // A BigInteger assignment operator } - + /* * If you want to experiment with the library, * you can add your own test code here. */ - // std::cout << "Beginning of custom test code:\n" << std::endl; - + // std::cout << "Beginning of custom test code:" << std::endl; + } catch(char const* err) { std::cout << "The library threw an exception:\n" << err << std::endl; } - + return 0; } @@ -97,6 +104,11 @@ Running the sample program produces this output: 83252135 1185 134 +0xFF +0xFF00FFFF +0xFF00FF00 +0x1FFFE00000 +0x3F 314^0 = 1 314^1 = 314 314^2 = 98596