Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.003 c