Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 085
от 22.01.2003, 02:20

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 144
Отправлено ответов: 437
Активность: 303.4 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Igoryk
Статус: Опытный
Общий рейтинг: 147.34
URL: IgorykSoft
[Подробней >>]
X-RayMan
Статус: Доверительный
Общий рейтинг: 146.66
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.66
[Подробней >>]
 
Byter
Статус: Опытный
Общий рейтинг: 125.09
[Подробней >>]
kvINT
Статус: Профессиональный
Общий рейтинг: 105.95
Телефон: (34316)2-31-45
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 107.8
[Подробней >>]
 
Tancho
Статус: Доверительный
Общий рейтинг: 136.7
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 142. Спасибо, за ответы на мой вопрос (№ 136). Теперь, мне интересно, как можно перевести из 10 системы в... (ответов: 7)

Вопросов: 1, ответов: 7


 Вопрос № 142

Спасибо, за ответы на мой вопрос (№ 136).
Теперь, мне интересно, как можно перевести из 10 системы в систему с основаниями 32 и 64?



Вопрос отправлен: 19.01.2003, 02:12
Отправитель: Alexsandra

[Следующий вопрос >>] [Список вопросов]

Отвечает Igoryk

Здравствуйте, Alexsandra!
Алгоритм такой: делишь число на 32 (или 64). Запоминаешь остаток. Затем повторяешь деление до тех пор, пока остаток не станет нулю. Затем записываешь остатки в обратном порядке и число готово.

Ответ отправлен: 20.01.2003, 15:06
Отправитель: Igoryk


Отвечает X-RayMan

Доброго времени суток, Alexsandra!
Это делается по такому алгоритму. Разберем на примере перевода числа 983756 в 32-ричную систему. Цифрами нужной системы будет остаток от деления.
Делим число на основание системы:
983756/32=30742 с остатком 12(младшая цифра)
30742/32=960 с остатком 22(вторая цифра)
960/32=30 с остатком 0(третья цифра)
30/32=0 с остатком 30(старшая цифра)
Теперь каждой цифре >9 надо придумать обозначение, возьмем вражеский алфавит :). 12 - B, 22 - L, 30 - U
983756(10)=U0LB(32)
В 64-ричную - также, только делить надо на 64 (и где ты только наберешься букв для обозначения цифр ;-))
А обратно переводить так:
(первая цифра*основание системы)+вторая цифра)*основание системы+3-я и т.д. только при добавлении последней цифры умножать не надо.
Т.е. для нашего примера:
((30*32+0)*32+22)*32+12=983756(10)

Приложение:

Ответ отправлен: 19.01.2003, 13:26
Отправитель: X-RayMan


Отвечает Ayl

Здравствуйте, Alexsandra!
Проще всего (ИМХО) перевести из 10-й в 2-ю, а потом в систему с нужным тебе основанием.
32 = 2^5, 64 = 2^6. Поэтому, для перевода из 2-й в 32-ричную надо заменять пентады 2-го числа на 32-ричную цифру, а из 2-й в 64-ричную - секстады.
Либо делать "тупо в лоб" - брать число, делить его на основание системы с остатком. Затем частное опять делить с остатком. И так далее до получения частного < основания системы. Потом выписать последнее частное и все остатки друг за другом для получения числа по данному основанию.


Ответ отправлен: 20.01.2003, 12:06
Отправитель: Ayl


Отвечает Byter

Приветствую Вас, Alexsandra!
Давай мыло ,Отправлю прогу для перевода в любую систему!
(из-зи АутГлюка в форму исходник не вставляется)


Ответ отправлен: 21.01.2003, 15:34
Отправитель: Byter


Отвечает kvINT

Здравствуйте, Alexsandra!
Делить на 32 или 64 и брать результаты и остатки от деления.
Пр.: 35/32 1 и 3 в остатке. Значит в 32-ричной системе 13.
А в 64-ричной - 35 (0 и 35 в остатке).

Ответ отправлен: 21.01.2003, 12:08
Отправитель: kvINT


Отвечает vitya

Доброе время суток, Alexsandra!
технология перевода числа из любой системы в любую производится следующим образом.
Предположим у тебя есть число P в p - чной системе исчисления и число Q в q - чной системе исчисления - итак алгоритм
while (P >= q)
{
div_in_p(P, q) => {P, Qi} //этим шагом получаем новое значение P, которое равно P/q в p-чной системе, a Q1 это остаток от деления, который является i - ым старшим разрядом в q - чной системе.
i := i + 1;
}
Qi = P; // это самый последний остаток.
Надеюсь понятно :)
В применение к 10 системе все просто, так как нам делить 10-чные числа очень просто.
вот пример перевода:
(72)10 -> (?)64
72/64 => (8, 1);
8 < 64 -> конец алгоритма
(72)10 = (18)64

Ответ отправлен: 20.01.2003, 08:29
Отправитель: vitya


Отвечает Tancho

Доброе время суток, Alexsandra!
Будем различать двух случаях :
1) Число больше 1 ;
2) Число меньше 1 ;
И одинь оговорок :
Для обозначения "цифры" больше 9 будем пользоваться "буквенных" символов соответствующую кодовою
таблицу.
Во функции, которых описаны в приложение, мы изпользуем
представление чисел в полиномиальном виде.Если число
больше 1 то в полиномиальном записе есть степени базый(p)
больше 1, если число меньше 1 то все степени базый(p) в
полиномиальном записе отрицательный.Для того чтобы перевести число из 10 системы в систему с основаниями 32 и
64, надо в основную прогу положить Base = 32 и Base = 64.


Приложение:

Ответ отправлен: 20.01.2003, 11:25
Отправитель: Tancho



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (30)
Perl (5)
Delphi (18)
Pascal (22)
Basic / VBA (12)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (30)
"Железо" (35)
Поиск информации (20)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (13)
Юристу
Гражданское право (11)
Семейное право (7)
Трудовое право (6)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное