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