Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Вниз

Системы исчисления   Найти похожие ветки 

 
Yan Kovalskiy   (2001-12-28 06:39) [0]

Добрый день!

Подскажите существует ли формула(алгоритм) перевода из одной системы исчисления в другую.
Скажем из 3-тичной в 6-тиричную.


 
panov   (2001-12-28 08:48) [1]

3-тичная-->2-ичная-->6-ричная


 
Nemesis   (2001-12-28 09:30) [2]

> panov
а почему не через 10, 8, 16 ...

Если знаеш как это зделать на бумаге: програмировать не составит труда


 
Sergii   (2002-01-05 06:56) [3]

Для целых чисел можно попробовать так (на примере 3-й и 6-й систем, в скобках буду указывать систему счисления).
(3): 0,1,2,10,11,12,20,21,22,100,101,...
(6): 0,1,2,3,4,5,10,11,12,13,14,15,20,...
Значения по ворастанию степени числа 6(10) для "старшей" системы в значениях "младшей"(для наглядности, справа будут числа в 10-й системе):
6(10) = 10(6) = 20(3)
36(10) = 100(6) = 1"100(3)
216(1) = 1"000(6) = 22"000(3)

Для перевода из "старшей" системы в "младшую" алгоритм следующий:
раскладываем число по разрядам, переводим полученные числа в "младшую" систему и производим алгебраические действия. Например, пусть необходимо преобразовать 5420(6) в 3-ю систему:
1. Раскладываем по разрядам(все числа - в 6-й системе):
(5 * 1"000) + (4 * 100) + (2 * 10) + (0 * 1)
2. Переводим в 3-ю систему каждое число(все числа в 3-й системе):
(12 * 22"000) + (11 * 1"100) + (2 * 20) + (0 * 1) =
3. Производим алгебраические действия
= 1"111"000 + 12 100 + 110 + 0 = 1"200"210

Для перевода из "младшей" в "старшую" необходимо:
1. Разделить число на максимально возможную степень числа-основания "старшей" системы (но, естественно, это значение должно быть переведено в "младшую") так, что-бы в результате получилось число, содержащее целую часть и некоторый остаток.
2. Умножить целую часть на делитель и вычесть полученное значение из делимого. Если разность окажется ненулевой, то повторяем пункт один, где в качестве делимого выступет эта разность, а делитель - (степень - 1) числа основания старшей "систмемы". Если на это число поделить не удается, то записываем в разряд 0.
3. Если разность оказалась нулевой, то переводим полученные на предыдущих этапах целые значения в "старшую" систему и выписываем их по разрядам. Однако следует учитывать, что если процедура деления закончилась, когда делитель не являлся числом основанием в нулевой степени, то во все последующие разряды по убыванию, необходимо записать 0.
Пример , переведем 1"200"210(3) в 6-ю систему:

1"200"210(3)/22"000(3) = 12(3) + остаток
1"200"210(3) - (12(3) * 22"000(3)) = 1"200"210(3) - 1"111"000(3) = 12"210(3), т.к. 12"210(3) <> 0 то

12"210(3)/1"100(3) = 11(3) + остаток.
12"210(3) - (11(3) * 1"100(3)) = 12"210(3) - 12"110(3) = 110(3)
т.к. 110(3) <> 0 то

110(3)/20(3) = 2(3) + остаток
110(3) - (20(3) * 2(3)) = 110(3) - 110(3) = 0. Т.е. остаток = 0.
Данный разряд не является нулевым 20(3) = 10(6), поэтому в оставшееся разряды (а разряд остался один) записываем 0. Выписываем все полученные числа по порядку:
12(3), 11(3), 2(3), 0. Переводим в 6-ю систему: 5420.





Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.018 c
14-66362
J_S
2001-11-22 21:45
2002.01.21
http://delphi.mastak.com/prikol/prayer.htm


1-66273
StelZ
2002-01-03 16:51
2002.01.21
Убор из Task Bar-а


3-66202
TYuri
2001-12-18 14:51
2002.01.21
Тогда еще вопрос


4-66407
Karan
2001-11-13 15:45
2002.01.21
Dll<-> String or Array


7-66373
Gallant
2001-10-06 17:15
2002.01.21
Как запретить изменение показания часов в Windows98





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский