Перевод больших чисел в двоичную систему без массива - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы