Восьмеричные вычисления в Java

каков рекомендуемый способ выполнения операций сложения и вычитания над восьмеричными числами? (Мои результаты поиска на сегодняшний день дали только преобразования восьмеричных чисел, но не показали, как выполнять арифметические операции с действительными восьмеричными числами). Моя программа генерировала 2 восьмеричных значения, затем складывала или вычитала их (случайным образом) и давала восьмеричную сумму.

eg.

 5 Octal + 3 Octal = 10 Octal;
 12 Octal - 3 Octal = 7 Octal;

Я пробовал использовать:

Integer.parseInt(int, 8), 

но я не понимаю, как построить для вышеуказанных результатов. У меня остальная часть программирования работает, я просто застрял на восьмеричных вычислениях. Я новичок в программировании и прорабатываю учебник Эрика С. Робертса «Искусство и наука Java», который указан как упражнение по программированию (глава 7, упражнение 3).


person user3477955    schedule 30.03.2014    source источник


Ответы (2)


Вы неправильно понимаете эту концепцию. Арифметика выполняется с числами, а не с восьмеричными числами, десятичными числами или шестнадцатеричными числами.

Восьмеричный / десятичный / шестнадцатеричный формат относится только к письменному представлению.

Как вы, наверное, знаете, чтобы записать буквальное восьмеричное значение в коде, вы ставите перед ним начальный ноль. Аналогично, чтобы записать шестнадцатеричное значение, вы ставите перед ним префикс 0x.

Чтобы напечатать значение в восьмеричном формате, используйте Integer.toOctalString(int).

Чтобы проанализировать строку и интерпретировать ее как восьмеричное значение, используйте Integer.parseInt(value, radix) и укажите 8 в качестве системы счисления.

Например, вы станете двумя примерами:

int value1 = Integer.parseInt("5", 8);
int value2 = Integer.parseInt("3", 8);

int result = value1 + value2;
System.out.println(Integer.toOctalString(result));

и

int value1 = Integer.parseInt("12", 8);
int value2 = Integer.parseInt("3", 8);

int result = value1 - value2;
System.out.println(Integer.toOctalString(result));
person Greg Kopff    schedule 30.03.2014

Вы можете использовать _1 _ метод получения восьмеричного представления числа, если вы имели в виду следующее:

System.out.println(Integer.toOctalString(012 - 03));  // 7
System.out.println(Integer.toOctalString(05 + 03));   // 10
person Rohit Jain    schedule 30.03.2014