I plan to store my numbers in arrays of integers/strings:
A=[1,0,1,1,0,.....0,1,0] - 54 bits
B=[1,1,1,0...0,1,0] - 10 bits
itsme86 is right. That's slow, inefficient, and it's the "hard way".
Binary is a little tricky, because (unlike octal & hexadecimal) it's not built into cin & cout.
Inside the computer, everything is already binary. It doesn't care if you consider it to be binary decimal, hex, etc.... You can input a decimal number and an octal number, add them together and display the result in hexadecimal without worrying about mixing bases! To the computer/compiler, they are just integers.
There are two issues:
1- You need to be able to handle 54 bit numbers. If your platform can't handle it, you may need a 3rd-party big number library.
2- You need to get your input / output in binary form.
For input, there is a standard C library function strtoul() that can convert (almost) any base to a regular integer. This may work for you, depending on the size of an unsiged long on your computer.
For output/display, there is a C++ STL component called <bitset>. It can be used to display an integer in binary. Again, I'm not sure if there is a limit on the number of bits.
Here are some code fragments from a program that works with smaller integers:
Code:
#include <bitset>
int main()
{
const int MAX_BITS = 8; // Limit to one-byte to make binary readable
int Base, x;
char InputString[40];
char OutputString[40]; // For itoa() [Microsoft only]
char *pEnd = NULL; // Required for strtol()
cout << "Base? (2-36, 0 to exit) " ;
cin >> Base;
if(!Base)
return 0;
cout << "Number? ";
cin >> InputString;
x = (int)strtol(InputString, &pEnd, Base); // String to long
cout << endl;
cout << "\t" << dec << x << "\t\t Decimal" << endl;
cout << "\t" << oct << x << "\t\t Octal" << endl;
cout << "\t" << hex << x << "\t\t Hex" << endl;
cout << "\t" << bitset<MAX_BITS>(x) << "\t Binary (LSB)" << endl;
(The above sample uses strol() instead of stroul(). )