как работать с другими основаниями системы счисления в Java?

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

6
задан professionalcoder2010 18 May 2010 в 18:32
поделиться

5 ответов

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

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

15
ответ дан 8 December 2019 в 05:20
поделиться

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

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

Поэтому ответ на ваш вопрос - c * 10 (если вы имели в виду 10 dec)

7
ответ дан 8 December 2019 в 05:20
поделиться

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

  • Если это сила двух, то просто сдвиньте все цифры влево на значение экспоненты влево
  • Если это не сила двух, то найдите наибольшую силу двух меньшую, чем значение, на которое вы хотите умножить ваше 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
ответ дан 8 December 2019 в 05:20
поделиться

Вы можете задать его как 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
-. 121---4126412-

Рассматривать

int c = 10001;

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

String binaryString = "10001";

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

0
ответ дан 8 December 2019 в 05:20
поделиться

Вы можете указать его как 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
1
ответ дан 8 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: