Перевод больших чисел в двоичную систему без массива - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д