Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2013, 16:26   #1
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию Перевод в 256-ти ричную систему

Появилось желание сделать свой велосипед в виде длинной арифметики. Хранить числа в двоично-десятичном формате не хочется. Хочется придумать способ перевести число, заданное строкой в 256-ти ричную систему. Ведь тогда можно намного снизить потребление памяти.

У кого-нибудь есть идея, как это сделать, ибо мой мозг отказывается выдавать мысль)
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 18.10.2013, 16:29   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

дак это делается все по тем же правилам, ничего нового.
Но если хочешь реально снизить потребление памяти - переводи в СОК, наверное.
rrrFer вне форума Ответить с цитированием
Старый 18.10.2013, 16:42   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Хочется придумать способ перевести число, заданное строкой в 256-ти ричную систему. Ведь тогда можно намного снизить потребление памяти.
ну а чем перевод в двоичное представление не угодил? по-сути одно и то же: обычный Int16 представляете в виде двух ASCII символов - та же запись в системе с основанием 256.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 18.10.2013, 17:13   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А зачем 2 байта? 1 байт и есть запись одной цифры в 256-ричной системе исчисления. Или 2-х в шестнадцатиричной, 8-ми в двоичной. Оно уже есть все и ни какой экономии памяти
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2013, 21:25   #5
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
А зачем 2 байта? 1 байт и есть запись одной цифры в 256-ричной системе исчисления. Или 2-х в шестнадцатиричной, 8-ми в двоичной. Оно уже есть все и ни какой экономии памяти
Как никакой экономии памяти?! Число разрядов для хранения числа определяется как логарифм по основанию системы счисления. Например, для хранения числа 1 000 000 000 требуется в 10-й системе 10 разрядов. В 16-ти ричной системе это будет 8 разрядов, а в 256-ти ричной будет 4 разряда. Хотя я сейчас прикинул, если писать в двоично-шестнацатеричной системе, то эффективность будет ровно такая же, как и от 256-ти ричной. Осталось только найти способ преобразовать строку из числа в 16-ти ричный формат)
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 18.10.2013, 21:45   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от MooNDeaR Посмотреть сообщение
В 16-ти ричной системе это будет 8 разрядов, а в 256-ти ричной будет 4 разряда.
Но для хранения каждого разряда потребуется больше памяти, по-моему
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 18.10.2013, 21:46   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Например, для хранения числа 1 000 000 000 требуется в 10-й системе 10 разрядов. В 16-ти ричной системе это будет 8 разрядов, а в 256-ти ричной будет 4 разряда.
В этом смысле да, но эта экономия будет существенной при работе с десятичными числами, число разрядов в которых существенно, тысяча скажем и выше. А как насчет времени преобразования такого числа в двоичный вид и наоборот по концу вычислений. Может выигрыш будет дробиной по сравнению с проигранным слоном?
Цитата:
Но для хранения каждого разряда потребуется больше памяти, по-моему
Почему, тот же миллиард в 256-ричной займет 4 байта, впрочем как и в двоичной, если не хранить каждую двоичную цифру в отдельном байте, а в бите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 18.10.2013 в 21:57.
Аватар вне форума Ответить с цитированием
Старый 18.10.2013, 21:57   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Почему, тот же миллиард в 256-ричной займет 4 байта, впрочем как и в двоичной, если не хранить каждое двоичное число в отдельном байте, а в бите
Займет столько же. Я имел ввиду размер одного разряда.
2 с.с. - 1 бит
16 с.с. - 4 бита
256 с.с. - 8 бит
Т.е. количество разрядов уменьшается, размер одного разряда увеличивается, выигрыш в памяти не наблюдается.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 18.10.2013, 22:01   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ТС же имеет ввиду выигрыш по сравнению с записью в десятичном виде.

ADD

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

Последний раз редактировалось Аватар; 18.10.2013 в 22:13.
Аватар вне форума Ответить с цитированием
Старый 18.10.2013, 22:38   #10
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
По поводу #7. Время вычислительных операций при реализации 256-разрядной арифметики в столбик по идее должно сократиться за счет меньшего цикла вычислений. Возможно и будет положительный эффект без ухудшения временных характеристик. В любом случае нужен достаточно кропотливый анализ с предварительным гуглением
Да тут решает только Система Остаточных Классов ведь...вроде как в более менее новых процессорах интела она встроена для 64х разрядных операций (не проверял, но слух ходит).
а вся эта 256-разрядная арифметика....да вы о чем вообще говорите?
когда у вас процессор будет считать в СС с основанием 256 - тогда сократиться, а пока-что даже троичная СС не дает достаточного профита (даже если в железе реализовано - смотри совковые эксперименты типа "Сетунь" и еще куча прочих) - профит там был, но затраты больше. А то что ТС предлагает - это ваще непонятная поделка (если ТС хочет потренироваться - я понимаю, если хочет запилить что-то полезное - можно не надеяться).
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод числа из 16 ричной сс в 8 ричную ( Delphi ) halk18 Помощь студентам 2 12.01.2013 20:53
Как посчитать дробную и целую часть числа переводя его из 10-тичной в 8-ричную систему?! diallfam Помощь студентам 2 06.05.2012 01:44
Перевести в 16 ричную систему счисления колянчик1712 Паскаль, Turbo Pascal, PascalABC.NET 0 26.12.2011 18:10
Иконки 256 на 256 в Delphi 7 _PROGRAMM_ Помощь студентам 2 30.04.2011 15:19
перевод из 10-тичной в 11-ричную систему счисления metallldoctor Помощь студентам 0 11.03.2010 13:51