Перевод больших чисел в двоичную систему без массива - C (СИ)
Формулировка задачи:
Нужно перевести число -10^9<n<10^9 в двоичную систему, массивы и строки использовать нельзя, даже с переменными long long не хватает места для конвертации, ~ 520000 максимальное значение которое посчитается правильно, взять число больше - будет неверный результат, подскажите как лучше сделать не используя массивы данное задание?
вот мой код:
#include <stdio.h>
int main()
{
long long dv, ds, nc, os;
scanf ("%lld",&ds);
dv=0;
nc=1;
while (ds>1000000000 || ds<-1000000000)
{
printf ("put correct number\n");
scanf ("%lld",&ds);
}
if (ds==0)
{
dv=0;
printf("dv= %lld", dv);
printf("\n");
}
if (ds>0)
{
while (ds!=0)
{
os=ds%2;
ds=(ds-os)/2;
dv=dv+os*nc;
nc=nc*10;
}
printf("dv= %lld", dv);
printf("\n");
}
else if (ds<0)
{
ds=ds*-1;
while (ds!=0)
{
os=ds%2;
ds=(ds-os)/2;
dv=dv+os*nc;
nc=nc*10;
}
dv=dv*-1;
printf("dv= %lld", dv);
printf("\n");
}
return 0;
}Решение задачи: «Перевод больших чисел в двоичную систему без массива»
textual
Листинг программы
#include <stdio.h>
int main(void) {
long long ds, tmp;
int len, i;
len = sizeof(ds)*8;
scanf ("%lld", &ds);
if(ds<0) ds*=-1;
tmp = (tmp=1)<<(len-1);
for (i=0; i<len; i++, ds<<=1)
printf("%d", (ds&tmp)?1:0);
printf("\n");
return 0;
}