package en.javarush.task.pro.task09.task0906;
/*
Binary converter
*/
public class Solution {
public static void main(String[] args) {
int decimalNumber = Integer.MAX_VALUE;
System.out.println("Decimal number " + decimalNumber + " is equal to binary number " + toBinary(decimalNumber));
String binaryNumber = "1111111111111111111111111111111";
System.out.println("Binary number " + binaryNumber + " is equal to decimal number " + toDecimal(binaryNumber));
}
public static String toBinary(int decimalNumber) {
int remainder; //остаток деления
String zz = ""; //string representation of binary number
while (decimalNumber > 0) { //
remainder = decimalNumber %2 ; //остаток деления = остаток от деления на два бинарного номера
decimalNumber = decimalNumber /2; //десятиричное число каждый раз делим на два
zz = remainder + zz; //string = остаток от деления
}
return zz; //возвращаем резальтат в формате string
}
public static int toDecimal(String binaryNumber) {
int i = 0; //степень умножения
int decimal=0; //десятиричное число
if (binaryNumber !=null) {
for (i=0; i<binaryNumber.length(); i++) {
decimal = (int) + (decimal + binaryNumber.length() + Math.pow (2,i));
}
return decimal;
}
else
return 0;
}
}
Chris
Level 23
Друзья в чём ошибка ?
Resolved
Comments (4)
- Popular
- New
- Old
You must be signed in to leave a comment
RaStudent
24 January 2023, 05:25
Есть такая замечательная комбинация Ctrl+Alt+L в Идее
И лучше привыкать не писать переменные как zz
+1
RaStudent
24 January 2023, 05:21
Условие:
Код:
Найдите 2 различия)) 0
Chris Менеджер по импорту
25 January 2023, 04:47
Поменял + на * в этой строке
И как я понимаю есть проблема в binaryNumber.length() , но не понимаю чем точно нужно его заменить .
Подскажите пожалуйста.
0
RaStudent
25 January 2023, 09:58
Вместо binaryNumber.length() должно подставляться число 0 или 1 из исходного двоичного числа, а раз цикл у нас начинается с нуля, то и цифры надо брать справа налево.
Например, двоичное число 10, берем "0", переводим в число 0, умножаем на 2 в степени 0.
Складываем с результатом.
Далее берем "1", переводим в число 1, умножаем на 2 в степени 1.
Складываем с результатом.
И так далее, если число большое
То есть надо последовательно брать числа по одному из двоичной строки, справа налево.
В общем, Вместо binaryNumber.length() должны участвовать binaryNumber, i, какая-то функция которая берёт подстроку из binaryNumber по одному символу, справа налево, и функция/оператор перевода из символа в число
+2