Reputation: 679
I'm using this sample code to help me accomplish decimal to binary number conversion : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13734&lngWId=3 to convert from decimal to binary.
I tried this out successfully for smaller numbers. But when I add a number for example:
2159492075 or 2159492195. The program just outputs 0
. Also I've tried an equally sized number for example 1234567899 or 2134567899 and I get a proper binary representation for the numbers. I wonder why this?
Initially I thought this might have been because of defining the variables as long int:
long int dec,k=0,i=0,j=0,n,remainder,result[100];
But on digging further, I don't think that is an issue. Could someone suggest what I might be doing incorrectly?
Upvotes: 0
Views: 229
Reputation:
Try using long long
type instead. Your problem may be not more than overflow.
void convert(long long n, int arr[100], int & i)
{
i = 0;
do
{
arr[i++] = n % 2;
n /= 2;
} while (n);
for (int j = 0; j <= i / 2; ++j) swap(arr[j], arr[i - j - 1]);
}
Usage:
int sz, my_arr[100];
convert(2013, my_arr, sz);
for (int i = 0; i < sz; ++i) cout << my_arr[i];
cout << endl;
Upvotes: 4