+ Ответить в теме
Показано с 1 по 3 из 3

Тема: Перевод из одной системы исчисления в другую. Как оказалось вопрос не тривиальный

  1. #1
    Zilon is on a distinguished road
    Регистрация
    22.11.2009
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Перевод из одной системы исчисления в другую. Как оказалось вопрос не тривиальный

    Стоит задача перевода значения из 2-ной системы исчисления в 4094-ичную (то есть (2^12 - 2) - ичную). То есть не кратную степени двойки. Существующие выкладки на эту тему предлагают значение числа в исходной сист. счисл. делить на основание. Проблема в том что исходное число в 2-ной системе может (и будет) n-битныйм. То есть произвольно большим.
    Подскажите алгоритм решения этой задачи.
    К стати эта задача возикла не из головы сумашедшего препода... мне ее завтра имплиментить)))

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Хыиуду has a spectacular aura about Хыиуду has a spectacular aura about
    Регистрация
    06.03.2005
    Адрес
    Москва
    Сообщений
    2,388
    Вес репутации
    20

    По умолчанию Re: Перевод из одной системы исчисления в другую. Как оказалось вопрос не тривиальный

    http://www.uroki.net/docinf/docinf28.htm
    В самом низу - деление в двоичной системе счисления.
    Искусство программирования - заставить компьютер делать все то, что вам делать лень.
    Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.

  4. #3
    developer chur is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    Riga, Latvia
    Возраст
    18
    Сообщений
    206
    Вес репутации
    16

    По умолчанию Re: Перевод из одной системы исчисления в другую. Как оказалось вопрос не тривиальный

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

    В твоей задаче лучше сначала создать массив массивов представляющий степени двойки в новой системе исчисления. Ну, конечно, надо ограничиться какой-то максимальной разрядностью входного двоичного числа

    Код :
    1. // пример создаваемого массива массивов
    2. // bits[0] = [1];
    3. // bits[1] = [2];
    4. // bits[2] = [4];
    5. // ....
    6. // bits[12] = [2, 1];
    7. // bits[13] = [4, 2];
    8. // ...
    9. newbase = 4094;
    10. maxsize = 1024;
    11. bits[] = [];
    12.  
    13. bits[0] = [1];
    14. for i=1; i<maxsize; i++
    15.   L = lenght(bits[i-1]);
    16.   overflow = 0;
    17.   for k=0; k<L; k++
    18.     bits[i][k] = bits[i-1][k] * 2 + overflow;
    19.     if bits[i][k] >= newbase
    20.       bits[i][k] -= newbase; overflow = 1;
    21.     else
    22.       overflow = 0;
    23.     end if
    24.   end for
    25.   if overflow then bits[i][L] = 1;
    26. end for

    Будем считать, что входное число представлено массивом "0" и "1". Если очередной разряд содержит "1", то просто по-разрядно прибавляем к результату соответствующий массив (из первого куска кода)
    Код :
    1. in = [];
    2. out = [];
    3. for i=0; i<length(in); i++
    4.   next unless in[i]
    5.   for L=0; L<length(bits[i]); L++
    6.     out[L] += bits[i][L];
    7.   end for
    8. end for

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

+ Ответить в теме

Похожие темы

  1. эффект наложения одной формы excel на другую
    У меня в процессе отработки кода находящегося внутри формы вызывается другая форма, которое накладывается на первую. Получается некрасиво. Никак не...
    от district в разделе MS Office и VB(A).
  2. Перевод из одной с.с. в другую при помощи рекурсии.
    Нужно реализовать перевод целого числа из одной системы счисления в другую (между основными - 2, 8, 10, 16), используя рекурсивные функции или...
    от Lgun в разделе Решите мне задачку
  3. exel передача данных из одной страницы в другую
    Можно ли со страницы «страхование» присвоить значение ячейке b4, находящейся на странице «ежегодно»? (есть страница «страхование» , на которой...
    от sildae_ в разделе MS Office и VB(A).
  4. Vba-перемещение записи из одной таблицы в другую
    Привет. Вопрос по VBA (Access). У меня есть две таблицы с абсолютно одинаковыми структурами, но с разными в них данными (КА (ИСТОРИЯ) и КА (ПЛАН)).И...
    от InfiniTy в разделе MS Office и VB(A).
  5. Как перенести данные из одной базы в другую
    Люди добрые подскажите есть две БД в формате аксцесса структура таблиц одинаковая. Как можно перенести данные из одной БД в другую при чем нужно...
    от Freeman8901 в разделе MS Office и VB(A).

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения