Проблемы с преобразованием из двоичного числа в десятичное в двоичное - PullRequest
0 голосов
/ 17 февраля 2019

Я довольно новичок в программировании.У меня возникли проблемы с преобразованием десятичного int в двоичный int.Цель состоит в том, чтобы ввести два значения ASCII (допустим, они являются AB) и преобразовать их в двоичное целое число без использования массивов для хранения двоичного значения.Я перепробовал много вещей, чтобы попытаться решить проблему, но логика, которая есть в моей программе, очень логична и имеет смысл для меня.Выход программы 1488373225, если вы введете «AB».Заранее спасибо!

Вот мой код:

 int converttoBinary(char input[MAX_1]){

    int temp2 = 0, rem = 0, i = 1, binary = 0, temp = 0;

    printf("\n");
    temp = input[0];
    temp2 = input[1] * 100;
    temp = temp + temp2;

    printf("%d", temp);
    while (temp > 0){
            rem = temp % 2;
            binary += rem * i;
            i *= 10;
            temp /= 2;
    }

    printf("The final binary value of %s is: %d", input, binary);

return binary;
}

1 Ответ

0 голосов
/ 17 февраля 2019

Причина, по которой ваш код не работает, заключается в том, что int в C недостаточно велик для хранения этого 15-значного числа, поэтому вы получили переполнение.попробуйте запустить ваш код только на одном символе, и вы увидите, что он работает просто отлично.
Как уже говорилось в комментарии - хранить этот «двоичный файл» в int не имеет смысла, вам, вероятно, следует сохранитьэто как строка.И если вам нужно только распечатать двоичный формат, вы можете просто напечатать цифру в цикле вместо сохранения всего двоичного файла.
Еще одна небольшая вещь - это не влияет на результат кода, но при выполнении побитовых операцийлучше использовать побитовые операторы - в вашем случае & 1 вместо % 2 и >> 1 вместо / 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...