Моя десятичная в двоичную конверсию распечатывает дополнительные числа - PullRequest
0 голосов
/ 14 сентября 2018

Так что я очень плохо знаком с C, и у меня возникают проблемы с преобразованием десятичных чисел в двоичные.

Я пытаюсь преобразовать 2 числа - «205» и «171» слишком двоично и поместить их как в отдельные массивы, так и в свою рабочую - вроде. Смотрите, они оба конвертируются правильно, но у них обоих есть три дополнительных "1", тянущих их.

Например, когда я использую «printf», чтобы увидеть, что находится в массиве x, это «11001101111» вместо «11001101». То же самое происходит с массивом y.

Вот программа на данный момент (я попытался аннотировать ее, чтобы сделать ее максимально понятной).

Примечание: я закомментировал "printf" для массива y, но вы можете отключить их, если хотите.

int inputx = 205;
int inputy = 171;
//scanf("%d %d", &inputx, &inputy); //
int x[16] = {};
int y[16] = {};

//declaring variables for x conversion

int i = 0;
int d1 = 0;
int c = 0;
int a = 0;
int number1[16] = {};
//converting inputx from decimal into binary

while (inputx != 0){
    i = i+1;
    d1 = inputx % 2;
    inputx = inputx / 2;
    c++;
    number1[c]=d1;
}//end while

//since the binary array is in reverse, this loop fixes it

for(a = 0; a < c; a = a + 1 ){
    x[a]=number1[c-a];
    printf("%d", x[a]); //printf just for testing 
}//end for

//declaring variables for y conversion

i = 0;
d1 = 0;
int c2 = 0;
a = 0;
int number2[16] = {};

//converting inputy from decimal to binary

 while (inputy != 0){
    i = i+1;
    d1 = inputy % 2;
    inputy = inputy / 2;
    c2++;
    number2[c2]=d1;
    }//end while

//since the binary array is in reverse, this loop fixes it


 for(a = 0; a < c2; a = a + 1 ){
    y[a] = number2[c2-a];      
   // printf("%d", y[a]); //printf just for testing 
 }//end for

Любая помощь приветствуется!

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