#java
#java
Вопрос:
Моя задача — написать метод, который преобразует любое десятичное число в двоичное, число задается как int, а преобразованное (двоичное) число также должно быть возвращено как int. Теперь у меня есть что-то вроде решения, но я не знаю, как сохранить преобразованное число как int, поскольку я работаю со строкой в своем методе! Я чувствую .parseInt()
, что это было бы слишком просто, потому что тогда я мог бы просто использовать . toBinaryString()
static void intToBin (int a) {
String bin = "";
while (a > 0) {
if ( a % 2 == 0 )
bin = bin "0";
else
bin = bin "1";
a /= 2;
}
for (int i = 0; i < bin.length();i ) {
System.out.print(bin.charAt(i));
}
Комментарии:
1. Каким вы ожидаете получить значение, когда вы преобразуете, скажем, десятичное число 43 в int и печатаете его.
2. Я не уверен, что понимаю; это уже int . «Преобразование» его в двоичное, а затем преобразование его обратно в an
int
снова кажется … странным.
Ответ №1:
Во-первых, двоичное представление — это просто значение десятичного числа в двоичной строке. Или десятичное — это просто представление двоичного числа. Если вы преобразуете двоичное число в int, это будет десятичное число (независимо от того, имеет ли оно только 1 и 0 или нет).
int a = 1001; //is a decimal number == 1,001
int b = 0b1001; //is a decimal number == 9
Приведенное выше будет напечатано в десятичном виде, потому что это выходное представление методов печати по умолчанию. Внутренне все числа равны 1 и 0 (или, возможно, даже 5 В и 0 В в зависимости от того, насколько конкретно вы хотите быть).
Если вы хотите преобразовать двоичную строку в десятичную, сделайте это аналогично. За исключением того, что вместо деления на два и получения остатка вы умножаете на два.
int sum =0
String s = "11011"; //27
for (char c : s.toCharArray()) {
sum = sum * 2 (c-'0'); // multiply by 2 and add the bit.
}
System.out.println(sum);
С принтами
27
Обратите внимание, что мне не нужно хранить его как строку, поскольку десятичное значение является представлением по умолчанию (как я объяснял ранее).
Ответ №2:
Это сделало бы то, о чем вы просите:
public static int decimalToBinary(int a) {
String result = "";
while (a > 0) {
int res = a % 2;
a = a / 2;
result = res resu<
}
return Integer.parseInt(result);
}
Ответ №3:
String text = etxtDecimal.getText().toString();
binary = Integer.toBinaryString(Integer.parseInt(text));
Это так. Мы используем toBinaryString
для преобразования десятичного числа в двоичное
Ответ №4:
Просто примечание, вместо того, чтобы использовать цикл:
for (int i = 0; i < bin.length();i ) {
System.out.print(bin.charAt(i));
}
цифры могут быть добавлены перед результатом:
...
if ( a % 2 == 0 )
bin = "0" bin;
else
bin = "1" bin;
...
System.out.println(bin);
(также можно просто добавить результат a % 2
, без необходимости if
не уверен, что лучше)
если вы хотите сохранить двоичное представление как int
(немного странно, сбивает с толку).
Пример: ввод 5
, вывод 101
int bin = 0;
int mult = 1;
while (a > 0) {
if (a % 2 == 1) {
bin = mu<
}
mult *= 10;
a /= 2;
}
не проверено, просто идея, чтобы вдохновить