Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Смена основания системы счисления. / 20 сообщений из 20, страница 1 из 1
22.04.2010, 13:08:28
    #36592233
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Подскажите, пожалуйста, или поделитесь ссылкой на алгоритм для быстрого перехода от одного основания к другому.
Желательно при это не использовать промежуточные десятичные значения.
Основание может быть любым от 2 до 256 (каждая цифра кодируется одним байтом).
--------------
Festina lente
...
Рейтинг: 0 / 0
22.04.2010, 14:42:36
    #36592462
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Быстрый переход существует только для кратных систем, таких как двоичная <-> восьмеричная <-> шестнадцатиричная. В этом случае группа разрядов одной системы отображается в частичные группы другой системы. Или троичная <-> девятиричная. Вообще вопрос безсмысленнен, пока не будет известно о ВНУТРЕННЕМ представлении числа в вычислительном программно-аппаратном комплексе (некоторые могут использовать символьную арифметику). Именно от него следует отталкиваться в вопросах оптимизации. В вашем случае, мы имеем скорее всего символьное (строковое) представление числа с основанием от 2 до 256.
...
Рейтинг: 0 / 0
22.04.2010, 15:13:41
    #36592548
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
mayton,

меня интересует универсальный алгоритм. Насчет внутреннего представление:
число хранится как массив байт. Каждый байт означает цифру числа.
При этом основание системы является дополнительным параметром.
То есть, число 255 в десятичной системе хранится как [0x02, 0x05, 0x05]. После перевода в 256-ричную систему
оно будет иметь вид [0xFF].
...
Рейтинг: 0 / 0
22.04.2010, 15:49:08
    #36592669
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Mozok wrote:
> Подскажите, пожалуйста, или поделитесь ссылкой на алгоритм для быстрого
> перехода от одного основания к другому.

А чем тебе алгоритм с делением и остатками не устаивает по производительности ?

> Желательно при это не использовать промежуточные десятичные значения.

Так оно штатно и не должно использоваться. Напрямую всегда производится перевод.

> Основание может быть любым от 2 до 256 (каждая цифра кодируется одним
> байтом).

Какое основание -- вообще не важно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
22.04.2010, 15:55:03
    #36592681
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Mozokменя интересует универсальный алгоритм.
Универсальный алгоритм - это боян, который тыщу раз описан в учебниках информатики. Ты очевидно не можешь разобраться с каким-то пустяком типа выделения символов (разрядов) в массиве байтов.
...
Рейтинг: 0 / 0
22.04.2010, 16:32:53
    #36592801
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
MasterZiv
А чем тебе алгоритм с делением и остатками не устаивает по производительности ?

На нем, родимом, и остановился. Хотелось узнать, существуют ли какие-либо
более быстрые альтернативы делению в столбик :).
...
Рейтинг: 0 / 0
22.04.2010, 16:47:45
    #36592854
Смена основания системы счисления.
Умножение?
...
Рейтинг: 0 / 0
22.04.2010, 19:17:05
    #36593263
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Mozok wrote:
> На нем, родимом, и остановился. Хотелось узнать, существуют ли какие-либо
> более быстрые альтернативы делению в столбик :).

А чем этот-то не устраивает ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
22.04.2010, 20:04:43
    #36593363
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
MasterZiv,

Люблю, когда есть выбор :).
...
Рейтинг: 0 / 0
22.04.2010, 20:52:29
    #36593406
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
MozokЛюблю, когда есть выбор :).
Алгоритм определения остатка от деления длинного целого числа в общем случае принципиально неупрощается и не поддаётся оптимизации. На этом (и в частности на сложности факторизации) строится вся криптография. Но если вы найдете какую-то рационализацию (или частные случаи) - то я с интересом готов послушать. Меня эта тема всегда интриговала.
...
Рейтинг: 0 / 0
23.04.2010, 09:13:02
    #36593862
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
MozokПосле перевода в 256-ричную систему
оно будет иметь вид [0xFF].

А я думал 0xFF - это 255 в 16-ричной системе счисления. Я знал, что я ошибался ;-)
...
Рейтинг: 0 / 0
23.04.2010, 09:27:06
    #36593888
Смена основания системы счисления.
А где тут деление длинных чисел?

На самом деле здесь именно умножение по новому основанию.
А деление исходного числа по старому основанию - операция простейшая - выделение разряда.
...
Рейтинг: 0 / 0
23.04.2010, 10:25:11
    #36594015
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
__Avenger__
А я думал 0xFF - это 255 в 16-ричной системе счисления. Я знал, что я ошибался ;-)
Еще раз внимательно почитайте пост, где я описываю внутреннее представление чисел.
------------------------------А где тут деление длинных чисел?

На самом деле здесь именно умножение по новому основанию.
А деление исходного числа по старому основанию - операция простейшая - выделение разряда.
А где тут умножение по новому основанию? Разряды в описанном мной представление уже выделены.
Для перехода к новому основанию используется деление исходного числа на новое основание и вычисление остатков.
...
Рейтинг: 0 / 0
23.04.2010, 11:07:31
    #36594133
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Очевидно гест имеет в виду операции "по модулю". Они используются в криптографии. Его мысль верна но кажется имеется еще что-то недосказанное к данному сабж.
...
Рейтинг: 0 / 0
23.04.2010, 12:27:29
    #36594398
Смена основания системы счисления.
Зачем формировать число из представления по старому основанию,
чтобы затем декодировать его по новому?

Нужно сразу формировать число по новому основанию.
Никаких делений не будет.

Что ты уперся в вариант с делениями. Он нужен если у тебя уже есть число во внутреннем представлениии. А у тебя еге нет
...
Рейтинг: 0 / 0
23.04.2010, 12:30:50
    #36594410
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Mozok__Avenger__
А я думал 0xFF - это 255 в 16-ричной системе счисления. Я знал, что я ошибался ;-)

А тогда в 16-ричной системе как число 255 будет представлено?
...
Рейтинг: 0 / 0
23.04.2010, 13:11:22
    #36594548
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
--------------------------------
Что ты уперся в вариант с делениями. Он нужен если у тебя уже есть число во внутреннем представлениии. А у тебя еге нет
У меня исходные данные - это числа уже во внутреннем представлении относительно какой-то системы.
__Avenger__А тогда в 16-ричной системе как число 255 будет представлено?
[0x0F, 0x0F].
...
Рейтинг: 0 / 0
23.04.2010, 13:23:12
    #36594597
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Mozokmayton,

меня интересует универсальный алгоритм. Насчет внутреннего представление:
число хранится как массив байт. Каждый байт означает цифру числа.
При этом основание системы является дополнительным параметром.
То есть, число 255 в десятичной системе хранится как [0x02, 0x05, 0x05]. После перевода в 256-ричную систему
оно будет иметь вид [0xFF].

Что это за бред?
Десятичная система счисления требует 10 знаков для записи чисел : от 0 до 9

255-ричная потребует соответственно 255 знаков (символов)
т.е FF в этом случае (число записанное в 255-ричной системе)
должно означать 255*F+(255*255)*F

число 255 (десятичное) в 255-ричной системе должно выглядеть как 10
...
Рейтинг: 0 / 0
23.04.2010, 13:26:34
    #36594610
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Mozok, Guest.

Мы ходим по кругу. Как-бы мы не реализовывали автомат трансляции одной системы в другую (на символьной арифметике или еще на бог весть какой), мы зацепим небольшой участок вычислений в двоичной системе (таковы условия) и поэтому не вижу смысла как-то особо шарахаться этой особенности. Надо наоборот получить с неё какие-то бенефиты.
...
Рейтинг: 0 / 0
23.04.2010, 14:47:41
    #36594898
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена основания системы счисления.
Gwa
255-ричная потребует соответственно 255 знаков (символов)
т.е FF в этом случае (число записанное в 255-ричной системе)
должно означать 255*F+(255*255)*F

0xFF не может быть 255-ричной системе.
Gwa
число 255 (десятичное) в 255-ричной системе должно выглядеть как 10

Точнее, как [0x01, 0x00]. А в 256-ричной - [0xFF].
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Смена основания системы счисления. / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]