2013-03-11 2 views
1

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

Затем создайте методы, которые позволят этим числам добавлять, умножать, вычитать и делить.

Мой вопрос будет первым:

Как мне сделать мою строку в двоичный

Например:

123 станет 1111011

8403678 станет 100000000011101011011110

И так ...

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

Последнее, что мне нужно, чтобы иметь возможность конвертировать результат из двоичного файла обратно в десятичный, что у меня больше проблем с пониманием того, как это сделать чем предыдущий случай (преобразование из двоичного в десятичную строку).

Например:

если 1111011 был добавлен в 100000000011101011011110 результат был бы 100000000011101101011001 и тогда он станет 8403801, который я печатал бы в результате.

Конечной целью этого проекта является создание нашего собственного класса, такого как java.math.BigInteger (без его использования, конечно) и обработки произвольно больших чисел (больше, чем может обрабатывать Int).

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Я отвечу быстро.

+0

Взгляните на класс BigInteger. Это поможет вам начать работу. Если вы думаете о множестве циклов, которые делятся на два и принимают по модулю два. –

+0

Если вы выполните это упражнение, вам нужно понять двоичную систему и ее арифметику. Только тогда вы будете готовы перевести это знание на Java. В Интернете много информации. Для справки: http://academic.evergreen.edu/projects/biophysics/technotes/misc/bin_math.htm или http://www2.cs.uregina.ca/~rbm/cs100/notes/binary/binary.html –

+0

Конечной целью этого проекта является создание нашего собственного класса, такого как java.math.BigInteger (без его использования) и обработки произвольно больших чисел (больше, чем может обрабатывать Int). – user2155003

ответ

0

Поскольку вы должны иметь возможность обрабатывать большие числа без использования BigInteger, вам нужно найти способ представления произвольно больших чисел. Очевидно, int не будет делать. Один простой способ - представить число как строку. Например, число 123 может быть сохранено как строка «123».

Преобразование в двоичный файл потребует некоторых промежуточных операций, таких как деление и модуляция. Таким образом, стоит подумать о том, как это сделать, когда ваши номера хранятся в строках. Поскольку это домашнее задание, я не хочу просто дать вам ответ, но вместо этого руководство.

Скажите, что вы хотите сделать дополнение.

  1. Подумайте, как вы добавляете большие цифры вручную. Какие цифры каждого номера вы используете, и как вы ими манипулируете, чтобы получить ответ? Этот алгоритм довольно прост, и как только вы это объясните, вы также можете дать компьютерные указания для этого. (Для добавления сначала добавьте цифры, цифры десяти и т. Д. И не забудьте их перенести, если вам нужно!)
  2. Обратите внимание, что вы можете получить цифры своего номера String с помощью метода, такого как charAt(int n). Это вернет символ с индексом n строки. Преобразуйте его в Integer с помощью Integer.parseInt() (который принимает числовую строку и преобразует ее в целое число).
  3. Итак, теперь вы можете подумать: если мне нужна цифра числа, какой индекс будет в строке?Начиная с этого, вы должны иметь возможность выяснить, как получить любую цифру из большой строки. Теперь вы можете реализовать свой алгоритм.

Наконец, чтобы преобразовать базу с десяти в двоичный код, вам нужно понять, как работают базы чисел. Это дает ясное и быстрое введение: http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary В разделе «Преобразование из десятичного в двоичный» в приведенной выше ссылке описывается метод именно того, что вы хотите сделать. Удачи.

Смежные вопросы