русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритмы перевода чисел из одной системы счисления в другую


Дата добавления: 2013-12-23; просмотров: 3193; Нарушение авторских прав


 

Наиболее общий алгоритм перевода числа X(k1) с основанием k1 в число X(k2) с основанием k2 выполняется в следующей последовательности:

- число X(k1) представляют в виде степенного ряда;

- заменяют цифры хi с основанием k1 их k2-ми представлениями;

- выполняют все операции сложения, умножения, возведение в степень в k2-й СС;

- с учетом точности определяют число целых и дробных цифр в числе X(k2), округляют и представляют по необходимости X(k2) в виде степенного ряда.

Рассмотрим общий алгоритм перевода чисел на примере числа X(2)= 1001,101, которое переведем в Х(10) .

1001,101 = 1×23 + 0×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 1×2-3 =

=8 +1 + 1/2 + 1/8 = 9,625(10) .

Однако применение этого алгоритма в случае k1 > k2 связано с громоздкими вычислениями, например, Х(10) = 36 переведем в Х(2) .

36(10) = 3×101 + 6×100 = (0011)×(1010)1 + (0110)×(1010)0 = 100100(2) .

Поэтому для перевода числа из 10 СС в 2 СС при k1 > k2 целую и дробную часть переводят отдельно по упрощенным алгоритмам. Для перевода це­лой части числа X(k1) отделяют у него целую часть Хц (k1) и делят его на основание k2 в k1-ой СС. В результате деления получают остаток О0 и частное Ч1. Если частное Ч1 ³ k2, его делят вновь Ч1/k2. Получают остаток О1 и частное Ч2. Деление частного продолжают до тех пор, пока на i-ом шаге не будет получен остаток Оi-1 и частное Чi < k2. Последнее частное принимается за цифру хi, а цифры xi-1, …, x0 определяются соответствующими остатками Оi-1, …, О1, О0. Располагая цифры в порядке Чi Оi-1 … О0, получают целую часть числа Х(k2).

Для определения дробной части числа Х(k2) берут дробную часть Хд (k1) числа Х(k1) и умножают ее на основание k2 по правилам k1 СС. В результате первого умножения получают целую часть произведения Ц1 и дробную часть D1. На втором шаге вновь берут дробную часть 0, D1 и умножают на основание k2. Умножение дробных частей продолжают до n-го шага Цn, Dn, пока не будет достигнута необходимая точность представления дроби. Приравнивая x-i = Цi получают значение дроби Хд (k2) =, x-1 x-2x-n. Рассмотрим алгоритм раздельного перевода целой и дробной части числа на примере. Пусть Х(10) = 20,4 необходимо перевести в двоичную СС. Тогда процесс перевода числа можно показать как деление (слева) и умножение (справа) по шагам:



 

1)        
    10 = Ч1     0,4 ´ 2 = 0,8 (Ц 1 = 0);
    О0 = 0        
2) 10/2 = 5 (Ч2 = 5, О1 = 0)   0,8 ´ 2 = 1,6 (Ц 2 = 1);
3) 5/2 = 2 (Ч3 = 2, О2 = 1)   0,6 ´ 2 = 1,2 (Ц 3 = 1);
4) 2/2 = 1 (Ч4 = 1, О3 = 0)   0,2 ´ 2 = 0,4 (Ц 4 = 0).

 

При переводе дробной части числа 20,4 умножение может быть продол­жено на любое число шагов, т. к. величину 0,4(10) нельзя точно представить в 2 СС. Ограничиваясь числом шагов, получим

Хц (k2)= х4 х3 х2 х1 х0, = Ч4 О3 О2 О1 О0, = 10100,

Хд (k2)=, х -1 х -2 х -3 х -4 =, Ц 1 Ц 2 Ц 3 Ц 4 =, 0110 …

20,4(10) » 10100,0110(2)

Учитывая, что основания четверичной, восьмеричной, шестнадцате- ричной СС кратны основанию двоичной, перевод чисел из этих СС в двоичную и обратно упрощен. Для перевода чисел из четверичной, восьмеричной, шестнадцатеричной СС в двоичную СС цифры в этих числах заменяются двумя, тремя, четырьмя разрядными двоичными эквивалентами слева и справа от запятой

123,02(4) = 3, 2(4) = 11011,001 (2)
11, 10(2)
             
621,34(8) = 1, = 110010001,0111(2)
001,
             
9Е,1D(16) = E, D   = 10011110,00011101(2).
1110,  

 

 

При переводе из двоичной СС в четверичную, восьмеричную, шестнадцатеричную СС цифры двоичной системы соответ­ственно объединяются в группы по две, три, четыре цифры слева и справа от запятой, а затем эти группы заменяются на эквивалентные цифры четверичной, восьмеричной, шестнадцатеричной СС. Например, число 1101101011,11(2) будет преобразовано

 

3, = 31223,3(4);
11,
             
3,   = 1553,6(8);
011,  
             
В, С   = 36В,С(16).
1011,  

 



<== предыдущая лекция | следующая лекция ==>
Вычислительные машины, системы и сети | Формы представления чисел в двоичной системе счисления


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.