Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

из двоичной в десятичную

64K
22 сентября 2011 года
az20110303
29 / / 13.09.2011
Есть число, состоящее из пары десятков байт. Подскажите оптимальный алгоритм для представления в десятичном виде.
Всё, что пришло в голову - деление с остатком.
394
22 сентября 2011 года
MegaMozg
317 / / 18.03.2006
информатику в школе изучали?
64K
22 сентября 2011 года
az20110303
29 / / 13.09.2011
у меня специальность по диплому "математик/программист", но я всё равно не догоняю.

10 не является степенью двойки, поэтому тут всё не так просто, как, скажем, с переходом от двоичной к 16ричной.
Просьба ответить по существу, для флуда есть общалка же.
240
22 сентября 2011 года
aks
2.5K / / 14.07.2006
:facepalm: :facepalm:
http://inf.e-alekseev.ru/text/Schisl_perevod.html
64K
22 сентября 2011 года
az20110303
29 / / 13.09.2011
Цитата: aks



Прочитайте вопрос внимательно, прежде чем палмфэйсить. Я спросил про ОПТИМАЛЬНЫЙ алгоритм.
Может быть просто вопрос не в тот раздел запостил, конкретно мне нужен алгоритм на Сях.
Сложность в том, что число большое и не умещается в имеющиеся типы данных.

Для пущей конкретности:
Пусть есть числа в шестнадцатеричном формате
56 78 09 DF AC 01 43 67 84 90
76 56 4A FF D5 FF 07 0A 80 10
Мне их необходимо с помощью ОПТИМАЛЬНОГО алгоритма (на Си) перевести в десятичный формат. Перевод нужен только, чтоб вывести их в output в десятичнов формате.
Оба занимают по 10 байт, значит printf("%d",value) не прокатит.

Была такая мысль:

 
Код:
char value[10];

while ( value_not_zero() ) {
  printf("%d", value_division_remainder_on(10));
  delete_value_on(10);
}


процедура delete_value_on будет медленной при любой реализации.
Вот я и спросил, может есть какой-то оптимальный алгоритм.
87
22 сентября 2011 года
Kogrom
2.7K / / 02.02.2008
Ответа у меня нет, но есть хотя бы рассуждения.

Например такой код:
 
Код:
a = 0x567809DFAC0143678490
b = 0x76564AFFD5FF070A8010

for number in a, b:
    print '%s => %s'%(hex(number).upper(), number)

мгновенно (по человеческим меркам) выдаёт результат:
0X567809DFAC0143678490L => 408337838292022208201872
0X76564AFFD5FF070A8010L => 558831069242326336045072

То есть можно было бы посмотреть, как такие длинные числа реализованы в исходном коде интерпретатора Python. Код то доступен и он на си. Вот вроде бы он:
http://hg.python.org/cpython/file/a06ef7ab7321/Objects/longobject.c
Но я с ходу не нашёл нужную функцию.
41K
23 сентября 2011 года
kisssko
108 / / 28.10.2010
http://sourceforge.net/projects/tommath/
240
23 сентября 2011 года
aks
2.5K / / 14.07.2006
Цитата: az20110303
Я спросил про ОПТИМАЛЬНЫЙ алгоритм.


Он самый оптимальный в общем случае. Оптимальней могут быть только некоторые частные случаи.

Цитата: az20110303

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


На "Сях" - это реализация алгоритма, а не сам алгоритм. На оптимальность алгоритма она не влияет. Может быть кривая не оптимальная реализация с точки зрения языка, но оптимальность алгоритма она не трогает. Учитесь уже правильно задавать вопросы, чтоб вас понимали. )

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог