2016-09-16 2 views
0

Хорошо, я знаю, что для этого названия уже есть много решений. Я прошел через эти ссылки, но не помог

Я новичок в java, и я пишу одну простую десятичную дробную программу преобразования. В котором пользователь вводит десятичную базу 10 оснований и получает выход в двоичной форме базы 2.

Я уже написал программу, но я не получаю надлежащего вывода. Что-то не хватает, что я не могу определить.
Вот мой код

Ошибка программы Десятичная до двоичной ошибки преобразования на выходе

import java.util.Scanner; 
class BinaryConversion{ 
    public static void main(String[] args){ 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter the decimal number to convert into binary"); 
     int num = scan.nextInt(); 
     StringBuilder BinaryString = new StringBuilder(); 
     BinaryString.setLength(0); 
     while(num!=1){ 
      num/=2; 
      int r = num%2; 
      BinaryString.append(Integer.toString(r)); 
     } 
     System.out.println(BinaryString.reverse()); 
    } 
} 


В приведенной выше программе Если я вхожу в десятичное число, скажем, 95 на выходе должен быть 1011111.
Но я получаю 101111
Пожалуйста, помогите.

ответ

1

Вы останавливаетесь, когда num равно 1. И выполнение разделения сначала пропустит одну двоичную цифру.

while(num!=1){ 
    num/=2; 
    int r = num%2; 
    BinaryString.append(Integer.toString(r)); 
} 

будет:

while (num > 0) { // till the remaining is greater than zero   
    int r = num % 2; // at first fetching the modulus result 
    BinaryString.append(Integer.toString(r)); 
    num /= 2; // then dividing 
}