как работать с другими базовыми числами в Java? - PullRequest
6 голосов
/ 18 мая 2010

Ребята, если int c = 10001; это двоичное значение. Если я хочу обработать его как умножение на 10, как это сделать?

Ответы [ 5 ]

15 голосов
/ 18 мая 2010

Если я вас правильно понимаю, вы захотите сделать это: Integer.parseInt("10001", 2), что даст вам 17.
Integer.toString также принимает основание в качестве второго аргумента.

Документ: Integer.parseInt (String s, int radix)

7 голосов
/ 18 мая 2010

«int» не является ни двоичным, ни шестнадцатеричным, ни десятичным, это просто место для хранения числа. Сами переменные не имеют определенного шестнадцатеричного / десятичного / двоичного представления, пока вы их не напечатаете.

Когда вы вводите число в ваш код, у него есть база, но после того, как она использует базу для обработки набранного вами текста, база отбрасывается, а int просто сохраняет число.

Итак, ответ на ваш вопрос c * 10 (при условии, что вы имели в виду 10 dec)

1 голос
/ 18 мая 2010

Вы можете указать его как int c = 0x11 (рассмотрим 10001 как 0001 0001, то есть 11 в шестнадцатеричном формате)

public static void main(String[] args) throws Exception {
    int c = 0x11; // 10001
    int d = 10; // ten decimal
    int d = 0x2; // ten binary 0010 - see table below
    System.out.println(c);
    System.out.println(c*d);
  System.out.println(c*e);  
}

двоично-десятичное преобразование

  • 0 0000
  • 1 0001
  • 2 0010
  • 3 0011
  • 4 0100
  • 5 0101
  • 6 0110
  • 7 0111
  • 8 1000
  • 9 1001
  • A 1010
  • B 1011
  • C 1100
  • D 1101
  • E 1110
  • F 1111
0 голосов
/ 18 мая 2010

Умножение двоичного числа на целое число:

  • Если это степень двойки, просто сдвиньте все цифры влево до значения экспоненты влево
  • Если это не степень двойки, найдите самую большую степень двойки, меньшую, чем значение, на которое вы хотите умножить ваше c. Сделайте то же самое для остатка и так далее. В конце просто сложите все значения.

Для вашего примера с c = 10001 (основание 2) * 10 (основание 10) это означает (10 = 2 ^ 3 + 2 ^ 1)

int c=10001
int result=c*1000+c*10 //left-shift 3 + left-shift 1

Но это действительно не очень хороший способ справиться с такой задачей ... Более того, он считает плохой идеей сохранять двоичное значение в int. Я думаю, что было бы лучше преобразовать двоичный файл в целое число перед его использованием.

0 голосов
/ 18 мая 2010

Лечение

int c = 10001;

как двоичное число действительно странно. Вместо этого было бы лучше объявить его как String

String binaryString = "10001";

, а затем цикл по каждому символу для выполнения любого базового алгоритма преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...