Преобразование номера базы и доступ к цифрам? - PullRequest
0 голосов
/ 13 декабря 2011

язык c ++

Мне нужно прочитать некоторые данные из 0 - n, теоретически n может быть бесконечностью. Основываясь на значении n, я должен изменить число с десятичного на это основание, даже если его основание составляет 10000. Поэтому, если я читаю 5 чисел, n = 5, я должен преобразовать их в base5.

Тем не менее, я не уверен, как сделать преобразование, но я уверен, что смогу прочитать его в какой-то статье. Но что меня действительно беспокоит, так это то, что когда я преобразую в любую базу n, какой тип мой результат будет хранить в массиве? Долго?

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

По сути, большинство манипуляций, которые вы собираетесь выполнить с числом, являются базово-инвариантными. Это означает, что вы можете добавить / sub / mul / div (и даже выполнить операции power / root / log) двух чисел, даже не зная их основы.
Подумайте об этом так: компьютер не делает ничего особенного, когда добавляет два беззнаковых целых, даже если вы работаете с 32-значным числом base-2.

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

0 голосов
/ 13 декабря 2011

Преобразование из десятичной в основную выполняется делением / по модулю.x - десятичное число, b - целевая база.

  1. r = x% b
  2. y = (xr): b
  3. замените x на y иповторяйте от 1 до тех пор, пока y не станет 0
  4. , в результате получаются r, снизу вверх

Ниже вы должны будете создать std::map с шаблонами замены для чисел вт, то есть для базы 16 некоторые записи будут 10 -> A, 11 -> B.Это подразумевает, что вам придется подумать о форме представления для очень больших n.

Кстати: рассмотрим книгу о программировании 101, преобразование десятичного числа в bin / oct / hex всегда Объясняется и легко адаптируется для других баз.

...