0

このサンプルコードを使用して、10進数から2進数への変換を実行しています:http ://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId = 13734&lngWId = 310進数から2進数への変換。

私はこれをより少ない数でうまく試しました。しかし、たとえば2159492075または2159492195のように数値を追加すると、プログラムは。を出力するだけ0です。また、同じサイズの数値、たとえば1234567899または2134567899を試しましたが、数値の適切な2進表現が得られます。なんでこんな?

当初、これは変数をintとして定義したためである可能性があると思いました。

long int dec,k=0,i=0,j=0,n,remainder,result[100];

しかし、さらに掘り下げてみると、それは問題ではないと思います。誰かが私が間違っているかもしれないことを提案できますか?

4

1 に答える 1

4

long long代わりにtypeを使用してみてください。あなたの問題はオーバーフロー以上ではないかもしれません。

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]);
}

使用法:

int sz, my_arr[100];
convert(2013, my_arr, sz);
for (int i = 0; i < sz; ++i) cout << my_arr[i];
cout << endl;
于 2013-01-16T21:22:26.383 に答える