2014-10-08 2 views
0

У меня возникли проблемы с моими алгоритмами, чтобы преобразовать десятичное число в двоичное число без разбора, это соответствующий раздел коды:Математически расчет десятичного в двоичный (Java)

public static void dtb(){ 
    System.out.print("\nDenary number to convert?(lower than 255): "); //eight bit conversion 
    int num = sc.nextInt(); 
    int decVal = 128; 
    int saveNum = num; //save point for the first input 
    int[] arr; 
    arr = new int[8]; 
     do{ 
      if (num - decVal > 0){ //binary to decimal 
       num = num - decVal; 
       arr[x] = 1; 
      } else arr[x] = 0; 
       decVal = decVal/2; 
       x++; 
     } while (decVal != 1); 
    System.out.print("\nBinary value of "+saveNum+" is: "+arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5]+arr[6]+arr[7]); 
} 

х объявлена ​​инициализируется статически, поэтому вне поля зрения. Я также знаю, где ошибка, но я не могу найти правильный способ сделать это, поэтому попросите о помощи. Я также довольно новичок, поэтому любая помощь по другому методу будет оценена по достоинству. Спасибо за любую помощь. Пример вывода = (вход = 42) 00101000

ответ

1

Вам нужно сравнить ли num - decVal больше или равно к 0. Поскольку у вас есть >, вам не хватает случая, тогда он равен 0, и вам не хватает 1 бит.

if (num - decVal >= 0){ 

Кроме того, вы будете нуждаться в цикле, пока decVal не равна 0, а 1, иначе вы пропустите последний бит на нечетные числа.

} while (decVal != 0); 

Выход с изменениями:

Binary value of 42 is: 00101010 
Binary value of 43 is: 00101011 
+0

Спасибо очень много работает, как задумано, такая простая необходимость изменений, не знаю, как она проскользнула мимо меня! – joescull

Смежные вопросы