Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.21;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
4-66390
Asisyay
2001-11-19 18:24
2002.01.21
приоритет


4-66402
ДедушкаКо
2001-11-19 14:45
2002.01.21
Из осн. удалили...не понял почему. Попробую здесь...


1-66302
VlNek
2002-01-04 18:00
2002.01.21
Конвертирование bmp в jpeg


6-66332
maxi
2001-10-25 13:30
2002.01.21
По поводу ITransport в TSocketConnection


1-66303
msys
2002-01-02 18:21
2002.01.21
SaveDialog