Я пытался сделать положительное двоичное число в преобразователь десятичных чисел, используя C, но когда я пытаюсь ввести значения выше, чем 1110011010110001010111 (3779671 в десятичном формате), программа всегда возвращает это точное число. Мое текущее назначение требует, чтобы оно работало с двоичными числами вплоть до 111111111111111111111111111111 (1073741823).
До сих пор я пытался изменить типы переменных на любые другие возможные более крупные размеры, но, похоже, это не работает. Вот текущий код:
#include <math.h>
void main()
{
unsigned long long int bi, de = 0;
unsigned long long int x = 0, bases;
scanf("%llu", &bi);
for(x=0 ; bi>0 ; x++, bi=bi/10){
bases = bi % 10;
de = de + bases * pow(2,x);
}
printf("%llu", de); // imprime o correspondente em decimal
}
Спасибо за помощь заранее.