package com.javarush.task.pro.task09.task0906;
/*
Двоичный конвертер
*/
public class Solution {
public static void main(String[] args) {
int decimalNumber = Integer.MAX_VALUE;
System.out.println("Десятичное число " + decimalNumber + " равно двоичному числу " + toBinary(decimalNumber));
String binaryNumber = "1111111111111111111111111111111";
System.out.println("Двоичное число " + binaryNumber + " равно десятичному числу " + toDecimal(binaryNumber));
}
public static String toBinary(int decimalNumber) {
String binaryNumber = "";
if (decimalNumber <= 0) {
return binaryNumber;
}
while (decimalNumber != 0) {
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
public static int toDecimal(String binaryNumber) {
int decimalNumber = 0;
if (binaryNumber == null) {
return decimalNumber;
}
for (int i = 0; i < binaryNumber.length(); i++) {
int index = binaryNumber.length() - 1 - i;
int value = Character.getNumericValue(binaryNumber.charAt(index));
decimalNumber += value * Math.pow(2, i);
}
return decimalNumber;
}
}Robert
12 уровень
я не понимаю что тут происходит
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил
13 мая 2023, 09:52
Это огрызок метода. Нужен весь. Ну и попробуй сформулировать вопрос. Не думаю что ты не понимаешь как работает цикл for
0
Robert
13 мая 2023, 10:02
int index = binaryNumber.length() - 1 - i;
int value = Character.getNumericValue(binaryNumber.charAt(index));
0
Денис Enterprise Java Developer
13 мая 2023, 10:14
И что именно здесь не понятно? Даже если просто перевести с английского это и будет объяснением того, что здесь происходит.
0
Михаил
13 мая 2023, 10:52
int index = binaryNumber.length() - 1 - i; брать номер с конца к началу.
int value = Character.getNumericValue(binaryNumber.charAt(index)); узнать какая цифра
В совокупности, чтение справа налево посимвольно. Единицы, десятки, сотни, тысячи и так далее.
0
Роман Rime
21 июня 2023, 09:40
Не понятно то, что на 10-м уровне, половина этого кода ниразу не встречалась априори. Человек видит решение, но не понимает - как он должен был это написать, если он ещё в принципе не знает про это.
0
Денис Enterprise Java Developer
21 июня 2023, 11:13
Перевод чисел между системами счисления это элементарная арифметика на уровне пятого класса средней общеобразовательной школы.
Для решения этой задачи хватит арифметических операторов модуля и базовой логики которые к 10му уровню как-то уже должны быть известны.
Единственное, что здесь может быть в новинку это метод класса Character, но это во первых гуглится, во вторых, само название метода получитьЧисловоеЗначение() как бы намекает что он делает, равно как и charAt, переводящийся как сиволВ. Ну и в третьих, использование этого метода так же не обязательно если самую малость вспомнить ту же самую арифметику. Строчные переменные в таком случае вообще не нужны будут.
Легко видеть, что если выключить эмоцию и включить голову - все достаточно банально.
0
Роман Rime
23 августа 2023, 13:55
Легко видеть суть проблемы, если Вы поставите себя на место изучающего материал "ученика", без багажа знаний 37 уровней и, возможно, опыта в программировании до JR.
+1
Денис Enterprise Java Developer
23 августа 2023, 14:06
Мне вот интересно, ты чего-то конкретное сказать хочешь или просто lawful-good отыгрываешь?) Вопрос по задаче мы с автором мы уже давно закрыли в личке, а ты мне тут все лучи добра шлёшь.
0