Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Расчетные методы.




В общем виде решение задачи перевода можно представить как нахождение коэффициентов ( ) нового ряда, изображающего число в системе счисления с основанием ( ).

Все действия должны выполняться по правилам ( -арифметики), т.е. по правилам исходной арифметики. После нахождения максимальной степени основания проверяют «вхождение» в заданное число всех степеней нового основания, меньших максимального.

Каждая из отмеченных степеней может входить в ряд не более раз, что определяется условием:

 

.

 

Для перевода операнда ( ) в систему с основанием ( ) необходимо записать ( ) в форме для вычисления количественного эквивалента, далее заменить цифры ( ) и основания ( ) их эквивалентами в системе с основанием ( ), а потом вычислить полученное выражение по правилам арифметики в системе с основанием ( ). Этот алгоритм удобно использовать в случае, когда ( ), причем ( ) соответствует системе счисления, где просто и «привычно» выполняются операции сложения и умножения (например, десятичной системы). Для упрощения вычислений при этом используют схему Горнера, в соответствии с которой формула для КЭЧ преобразуется путем многократного вынесения за скобки:

 

. (2.11)

Отсюда видно, что для получения целой части числа необходимо выполнить ( ) шагов вычислений, а для получения дробной – ( ) шагов вычислений. Таким образом, вышеописанный алгоритм состоит из двух алгоритмов, а именно: перевода целой части числа, выполняемого в соответствии с рекуррентной формулой (2.12):

 

, (2.12)

 

где , – целая часть исходного числа в системе счисления с основанием ( ); и переводе дробной части числа, выполняемого в соответствии с рекуррентной формулой (2.13):

 

, (2.13)

 

где , – дробная часть исходного числа в системе с
основанием ( ).

Рассмотренный алгоритм не имеет каких-либо теоретических ограничений на область своего применения.

Однако при переводе целых чисел в системы с «непривычными» основаниями, особенно в случае , использование этого алгоритма связано с весьма громоздкими вычислениями.

Поэтому на практике используют отдельные алгоритмы перевода целых чисел и правильных дробей.

В случае целое число ( ) запишем в системе с основанием ( ) с использованием схемы Горнера:

 

.

 

Правую часть выражения разделим на величину основания ( ).
В результате получим первый остаток ( ) и целую часть:

 

.

 

Разделив целую часть на ( ), найдем второй остаток ( ).

Повторяя процесс деления раз, получим последнее целое частное, которое, по условию, меньше основания системы счисления ( ) и является старшей цифрой числа, представленного в системе с основанием ( ).



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

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

Число в новой системе счисления записывается из остатков от последовательного деления, причем последний остаток будет старшей цифрой нового числа.

Алгоритмперевода целых чисел из одной позиционной системы счисления в другую можно сформулировать следующим образом: операнд ( ) необходимо делить на ( ) по правилам целочисленного деления в исходной системе счисления с основанием ( ) до получения остатка.

Если частное от такого деления не нуль, то далее частное рассматривается как делимое и процесс деления на ( ) продолжают.

Как только очередное частное станет равным нулю, процесс деления прекращают.

Остаток, полученный при первом делении на ( ), представляет собой цифру результата с весом ( ), остаток от второго деления – цифру результата с весом ( ) и т.д.

Последний остаток является старшей цифрой результата.

Например: необходимо перевести из десятичной системы счисления в двоичную целое число .

Решение: произведем последовательное деление исходного числа ( ) на основание новой системы счисления (2). Перевод целого числа из десятичной системы счисления в двоичную приведен на рис. 2.14:

 

       
     
   
   
   
     
         

 



Рисунок 2.14 – Перевод целого числа из десятичной системы счисления в двоичную

 

Из сформулированного выше правила при переводе целого числа из десятичной системы счисления в двоичную получим:

 

.

Например: необходимо перевести из десятичной системы счисления в троичную целое число .

Решение: произведем последовательное деление исходного числа на основание новой системы счисления (3). Перевод целого числа из десятичной системы счисления в троичную приведен на рис. 2.15:

 

 

   
 
 
     

 

Рисунок 2.15 – Перевод целого числа из десятичной системы счисления в троичную

 

Из сформулированного выше правила при переводе целого числа из десятичной системы счисления в троичную получим:

.

 

Например: необходимо перевести из десятичной системы счисления в пятеричную целое число .

Решение: произведем последовательное деление исходного числа ( ) на основание новой системы счисления (5). Перевод целого числа из десятичной системы счисления в пятеричную приведен на рис. 2.16:

 

 
   

 

Рисунок 2.16 – Перевод целого числа из десятичной системы счисления в пятеричную

 

Из сформулированного выше правила при переводе целого числа из десятичной системы счисления в пятеричную получим:

 

.

 

Например: необходимо перевести из десятичной системы счисления в восьмеричную целое число .

Решение: произведем последовательное деление исходного числа ( ) на основание новой системы счисления (8). Перевод целого числа из десятичной системы счисления в восьмеричную приведен на рис. 2.17:

 

 

 

Рисунок 2.17 – Перевод целого числа из десятичной системы счисления в восьмеричную

 

Из сформулированного выше правила при переводе целого числа из десятичной системы счисления в восьмеричную получим:

.

 

Например: необходимо перевести из десятичной системы счисления в шестнадцатеричную систему счисления целое число .

Решение: произведем последовательное деление исходного числа ( ) на основание новой системы счисления (16). Перевод целого числа из десятичной системы счисления в шестнадцатеричную, приведен на рис. 2.18:

 
   

 

Рисунок 2.18 – Перевод целого числа из десятичной системы счисления в шестнадцатеричную

 

Из сформулированного выше правила при переводе целого числа из десятичной системы счисления в шестнадцатеричную получим:

 

.

 

При переводе из не десятичной системы счисления в десятичную, ввиду ее не привычности для человека производство в ней арифметических действий значительно затруднено. В этом случае для преобразования чисел необходимо воспользоваться формулой:

.

 

Например: перевести из двоичной системы счисления в десятичную целое число .

Решение: Запишем число ( ) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:

 

 

Таким образом, получаем: .

Например: перевести из троичной системы счисления в десятичную целое число .

Решение: запишем число ( ) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:

.

 

Таким образом, получаем: .

Например: перевести из пятеричной системы счисления в десятичную целое число .

Решение: запишем число ( ) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:

 

.

 

Таким образом, получаем: .

Например: перевести из восьмеричной системы счисления в десятичную целое число .

Решение: запишем число ( ) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:

 

.

Таким образом, получаем: .

Например: перевести из шестнадцатеричной системы счисления в десятичную целое число .

Решение: запишем число ( ) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:

 

.

 

Таким образом, получаем: .

При переводе из недесятичной системы счисления в недесятичную систему счисления с основанием степени двойки, например, если необходимо перевести число из двоичной системы счисления в систему счисления, основанием которой является степень двойки, достаточно объединить цифры двоичного числа в группы по столько цифр, каков показатель степени.

Например, если перевод осуществляется в восьмеричную систему счисления, то группы будут содержать три цифры ( ), такая группа называется триадой. Если перевод осуществляется в шестнадцатеричную систему счисления, то группы будут содержать четыре цифры ( ), такая группа называется тетрадой. В целой части числа группировка производится справа налево, в дробной части – слева направо. Если в последней группе недостает цифр, то дописываются нули: в целой части – слева, в дробной – справа. Затем каждая группа заменяется соответствующей цифрой новой системы счисления.

Например: необходимо из двоичной системы счисления перевести в восьмеричную целое число: .

Решение: исходя из вышесказанного, разобьем целое число: на триады и получим, рис. 2.19:

 

22 21 20 22 21 20
       
             

 

Рисунок 2.19 – Перевод целого числа в восьмеричную систему счисления

 

Таким образом, получаем: .

Например: необходимо из двоичной системы счисления перевести в шестнадцатеричную целое число: .

Решение: исходя из вышесказанного, разобьем целое число: на тетрады и получим (рис. 2.20):

23 22 21 20 23 22 21 20

 

Рисунок 2.20 – Перевод целого числа в шестнадцатеричную систему счисления

 

Таким образом, получаем: .

При переводе из недесятичной системы счисления в недесятичную систему счисления с основанием степени двойки, например, если необходимо перевести число из восьмеричной системы счисления в шестнадцатеричную необходим промежуточный перевод в двоичную систему счисления. Сначала сформировать триады, а затем тетрады. То же самое, если необходимо перевести число из шестнадцатеричной системы счисления в восьмеричную, необходим промежуточный перевод в двоичную систему счисления. Сначала сформировать тетрады, а затем триады.

Например: необходимо из восьмеричной системы счисления перевести в шестнадцатеричную целое число: .

Решение: исходя из вышесказанного, переведем сначала целое число в двоичную систему счисления, разбив его на триады, а затем триады, преобразовав в тетрады, получим число в шестнадцатеричной системе счисления рис. 2.21:

 

 
 
       
                               

 

Рисунок 2.21 – Перевод из восьмеричной системы счисления в шестнадцатеричную целого числа

 

Таким образом, получаем: .

Например: необходимо из шестнадцатеричной системы счисления перевести в восьмеричную целое число: .

Решение: исходя из вышесказанного, переведем сначала целое число:

в двоичную систему счисления, разбив его на тетрады, а затем тетрады, преобразовав в триады, получим число в восьмеричной системе счисления, рис. 2.22:

 

       
       
           
                                       

Рисунок 2.22 – Перевод из шестнадцатеричной системы счисления в восьмеричную целого числа

 

Таким образом, получаем: .

При переводе из десятичной системы счисления в двоично-десятичную подразумевают, что двоично-десятичная система счисления представляет собой систему с основанием (10), цифры которой закодированы в виде четырехразрядных двоичных чисел (тетрад), либо с естественным порядком весов (8–4–2–1), либо с искусственным порядком весов. Например: необходимо из десятичной системы счисления перевести в двоично-десятичную целое число: . Решение: исходя из вышесказанного, при переводе целого десятичного числа: в двоично-десятичную систему счисления, необходимо разбить его на тетрады – рис. 2.23:

 

23 22 21 20 23 22 21 20 23 22 21 20
                         

 

Рисунок 2.23 – Перевод из десятичной системы счисления в двоично-десятичную целого числа

 

Таким образом, получаем: . Например: необходимо из двоично-десятичной системы счисления перевести в десятичную целое число: . Решение: исходя из вышесказанного, при переводе целого двоично-десятичного числа: в десятичную систему счисления, необходимо разбить его на тетрады – рис. 2.24:

 

23 22 21 20 23 22 21 20 23 22 21 20

Рисунок 2.24 – Перевод из двоично-десятичной системы счисления в десятичную целого числа

Таким образом, получаем: .

При переводе из недесятичной системы счисления в недесятичную, например, если необходимо перевести число из пятеричной системы счисления в троичную систему счисления, необходим промежуточный перевод в десятичную. Например: перевести из пятеричной системы счисления в троичную целое число . Решение: Исходя из вышесказанного, сначала необходимо целое число: , записанное в пятеричной системе счисления, перевести в десятичную, а затем полученное число из десятичной системы счисления перевести в троичную.

Действие №1: .

 

.

 

Действие №2: , рис. 2.25:

   
 
 
     

 

Рисунок 2.25 – Перевод целого числа из десятичной системы счисления в троичную

 

Таким образом, получаем: .

Правило перевода правильной дроби из одной позиционной системы счисления в другую. Пусть правильная ( –ичная) дробь уже переведена и представлена в новой системе счисления с основанием ( ):

 

,

 

где – целая часть первого произведения;

– дробная часть первого произведения.

Умножив на ( ) дробную часть первого произведения, определим вторую цифру ( ):

 

,

где – целая часть первого произведения.

Для перевода правильной дроби из одной позиционной системы счисления в другую ее надо последовательно умножать на основание новой системы счисления ( ) до тех пор, пока в новой дроби не будет нужного количества цифр, которое определяется требуемой точностью представления дроби или цифры последнего произведения должны равняться нулю.

Правильная дробь в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем первая целая часть будет старшей цифрой новой дроби. Например: необходимо перевести из десятичной системы счисления в двоичную правильную дробь . Решение: исходя из вышесказанного, произведем последовательное умножение на новое основание системы счисления (2), (рис. 2.26):

 

  0,
       
Самая старшая цифра - 0,
       
  1,
       
Самая младшая цифра - 1,

 

Рисунок 2.26 – Перевод из десятичной системы счисления в двоичную правильной дроби

 

Таким образом, получаем: . Например: необходимо перевести из десятичной системы счисления в восьмеричную правильную дробь . Решение: исходя из вышесказанного, произведем последовательное умножение на новое основание системы счисления (8), рис. 2.27:

 

  0,
         
Самая старшая цифра - 6,
         
Самая младшая цифра - 4,

 

Рисунок 2.27 – Перевод из десятичной системы счисления в восьмеричную правильной дроби

 

Таким образом, получаем: .

Если при переводе правильной дроби из одной позиционной системы счисления в другую при последовательном умножении на основание новой системы счисления ( ) цифры последнего произведения не равняются нулю, то процесс умножения заканчивается тогда, когда появляется период, и в этом случае говорят: приблизительно равно.

Правильная дробь в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем первая целая часть будет старшей цифрой новой дроби.

Например: необходимо перевести из десятичной системы счисления в двоичную правильную дробь .

Решение: исходя из вышесказанного, произведем последовательное умножение на новое основание системы счисления (2), (рис. 2.28):

  0,
     
Самая старшая цифра - 0,
     
  1,
     
  0,
     
  1,
     
  1,
     
Самая младшая цифра - 0,

 

Рисунок 2.28 – Перевод из десятичной системы счисления в двоичную правильной дроби

 

Последнее произведение получилось равным (0,40), а ранее было уже получено произведение (1,40), следовательно, считаем, что начался период.

Таким образом, получаем: .

Например: необходимо перевести из двоичной системы счисления в десятичную правильную дробь .

Решение: в этом случае для преобразования чисел необходимо воспользоваться формулой:

.

Запишем число ( ) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:

 

.

Таким образом, получаем: .

Для перевода неправильной десятичной дроби в систему счисления с недесятичным основанием необходимо отдельно перевести целую часть и отдельно дробную.

Например: необходимо перевести из десятичной системы счисления в двоичную неправильную дробь .

Решение: исходя из вышесказанного, необходимо сначала перевести целую часть числа ( ) путем последовательного деления на основание новой системы счисления (2) до тех пор, пока не получится частное, у которого целая часть равна (0). При этом число в новой системе счисления записывается из остатков от последовательного деления, причем, последний остаток будет старшей цифрой нового числа. А затем перевести дробную часть путем последовательного умножения на основание новой системы счисления (2) до тех пор, пока в новой дроби не будет нужного количества цифр, которое определяется требуемой точностью представления дроби. Тогда дробная часть числа ( ) в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем, первая целая часть будет старшей цифрой новой дроби, (рис. 2.28):

 

        0,
           
    0,
         
      0,
               
            1,

Рисунок 2.28 – Перевод из десятичной системы счисления в двоичную неправильной дроби

Таким образом, получаем: .

Для перевода восьмеричного (шестнадцатеричного) числа в двоичное необходимо каждую цифру исходного числа записать в виде эквивалентного ей трехбитного (четырехбитного) двоичного числа.

Например: необходимо перевести из восьмеричной системы счисления в двоичную неправильную дробь .

Решение: исходя из вышесказанного, разобьем каждую цифру неправильной восьмеричной дроби на триады и переведем каждую цифру отдельно:

273.5(8) = 0 1 0 1 1 1 0 1 1, 1 0 1(2) = 010111011,101(2) или 10111011,101(2)
веса: 4-2-1 4-2-1 4-2-1 4-2-1  

Например: необходимо перевести из шестнадцатеричной системы счисления в двоичную неправильную дробь .

Решение: исходя из вышесказанного, разобьем каждую цифру неправильной шестнадцатеричной дроби на тетрады и переведем каждую цифру отдельно:

5АЕ.18(16)= 0 1 0 1 1 0 1 0 1 1 1 0, 0 0 0 1 1 0 0 0(2) =10110101110,00011(2)
веса: 8-4-2-1 8-4-2-1 8-4-2-1 8-4-2-1 8-4-2-1 .  

 

Все рассмотренные алгоритмы предназначены для программного перевода чисел. Известно также множество алгоритмов перевода, ориентированных на реализацию их аппаратными средствами. Однако изучать такие алгоритмы целесообразно вместе с изучением микропроцессорных систем.

 

2.2 Представление числовых данных в микропроцессорных системах

 

Система вещественных чисел, используемая в ручных расчетах, предполагается бесконечной и непрерывной, т.е. отсутствуют ограничения на диапазон используемых чисел и точность (количество значащих цифр).

Пояснение: для любого вещественного числа существует бесконечно много чисел, которые больше или меньше его, и между любыми двумя вещественными числами находится также бесконечно много чисел.

В микропроцессорной технике размеры устройств ограничены. Эти ограничения касаются диапазона чисел и точности их представления. Поэтому система машинных чисел является конечной и дискретной, образуя подмножество системы вещественных чисел.

На рис. 2.29 схематически представлена система микропроцессорных чисел, где ( ) и ( ) – соответственно максимально и минимально представимые числа, между которыми находится конечное множество допустимых чисел.

 

Рисунок 2.29 – Система микропроцессорных чисел

 

Если результат операции по модулю превышает | |, то возникает переполнение (overflow). Если модуль результата | |<| |, фиксируется антипереполнение (underflow).

В этом случае большинство микропроцессоров возвращают в качестве результата операции (0). Поэтому область чисел от ( до ), за исключением истинного нуля, называют машинным нулем. В современных микропроцессорных системах преимущественно используют две формы представления чисел:

– с фиксированной точкой (фиксированной точкой – fixed point) – естественная форма;

– с плавающей точкой (плавающей точкой – floating point) – альтернативные названия – нормальная, экспоненциальная, научная запись или полулогарифмическая.

Например, пусть задано число:

 

,

где – некоторое число; – цифры слева от запятой; – цифры справа от запятой.

В позиционной системе счисления с основанием (2) его можно записать в виде:

,

 

где: – некоторое число; – мантисса; 2 – основание системы счисления; – порядок.

Если каждому числу ( ) в микропроцессорной системе однозначно соответствует мантисса ( ), а порядок ( ) фиксирован для всех чисел, то число ( ) представлено в форме с фиксированной точкой. Порядок ( ) в этом случае устанавливается заранее при подготовке задачи к решению, причем число ( ), по существу, является масштабным коэффициентом, на который необходимо умножить исходные данные для того, чтобы избежать переполнения разрядной сетки.

Естественная форма характеризуется тем, что положение разрядов
(и точки) в микропроцессорном представлении чисел остается всегда постоянным, независимо от величин чисел, с которыми оперирует микропроцессорная система. С целью упрощения процедуры определения масштабных коэффициентов точку обычно фиксируют перед старшим разрядом мантиссы или после ее младшего разряда.

В первом случае микропроцессорная система оперирует с числами, которые по абсолютной величине меньше единицы, то есть, с правильными дробями. Если количество разрядов для представления мантиссы равно ( ), то: ( ).

Во втором случае микропрцессорная система выполняет операции с целыми числами, абсолютные величины которых находятся в пределах от
(1 ) минимального, не равного нулю числа ( до ).

Если каждому числу ( ) однозначно соответствует пара ( ) и ( ), то такое представление называют формой с плавающей точкой. Следует иметь ввиду, что положение точки в реальной разрядной сетке микропроцессорной системы физически никак не указывается, а только «подразумевается» и само число можно записать в виде:

;

 

;

 

где – некоторое число; – мантисса числа ( ); – разделитель мантиссы и порядка числа ( ); – порядок числа ( ).

Для однозначного представления числа в нормальной форме принято, что мантисса должна удовлетворять условию:

 

,

 

то есть мантисса должна быть правильной дробью, а ее старшая цифра – отличной от (0). В таком случае представление числа является нормализованным. Помимо однозначного представления, это дает еще и сохранение максимального количества значащих цифр мантиссы при выполнении операций. Положение разрядов числа в форме с плавающей точкой не является постоянным, то есть точка как бы плавает.

С учетом рассмотренных ранее структурных единиц информации, в микропроцессорных системах различают следующие форматы: слово, полуслово (байт), двойное слово (doubleword), учетверенное слово (quadword).

В соответствии с перечисленными форматами различают базовые типы целочисленных данных:

- слово – 8 бит;

- целое слово – 16 бит;

- короткое целое слово – 32 бит;

- длинное целое слово – 64 бит.

Для того чтобы микропроцессорная система могла оперировать как положительными, так и отрицательными числами, в разрядную сетку микропроцессорного представления числа необходимо ввести знаковую часть.

В двоичной системе счисления приянто знак положительного числа обозначать «0», а знак отрицательного числа – «1» (обычно это крайний левый бит в представлении числа), как показано на рис. 2.30.

 

 

Рисунок 2.30 – Формат числа в двоичной системе счисления со знаковым битом

 

Будем обозначать целые знаковые числа в виде:

 

,

 

а правильные дроби:

 

.

 

В связи с тем, что алгоритмы выполнения операций в микропроцессорных системах имеют свою специфику, возникает проблема представления отрицательных чисел. Ее решают за счет использования особых способов кодирования числовых данных.

Рассмотрим три наиболее распространенных кода, которые применяются на практике:

· прямой код;

· обратный код;

· дополнительный код.

Прямой код используется для представления отрицательных чисел в запоминающем устройстве, а также при умножении и делении.

Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока микропроцессорной системы.

К кодам выдвигаются следующие требования:

а) разряды числа в коде жестко связаны с определенной разрядной сеткой;

б) для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.

 

1. Прямой код.

Наиболее естественный код. Формируется следующим образом: в знаковый бит ( ) числа помещают знак числа (0 – если число положительное и 1 – если число отрицательное), а остальные биты используют для абсолютного значения (модуля) числа. Правило преобразования чисел в прямом коде можно записать так:

 

.

где – вес страшего разряда в – разрядной сетке, .

 

Отображение -битных наборов двоичных чисел (верхняя числовая прямая) на числовую ось данных прямого кода (нижняя числовая прямая) для микропроцессорной системы показано на рис. 2.31.

 

Рисунок 2.31 – Отображение -битных наборов двоичных чисел на числовую ось данных прямого кода

Например:

 

Десятичное число Двоичное число Прямой код Комментарии
(0(10)) 0000(2) 0,000 положительный (0)
(0(10)) 0000(2) 1,000 отрицательный (0)
(4(10)) 0100(2) 0,100 положительная (4)
(- 4(10)) 1100(2) 1,100 отрицательная (4)
(3(10)) 0011(2) 0,011 положительная (3)
(- 3(10)) 1011(2) 1,011 отрицательная (3)

 

Диапазон представимых чисел: .

Положительный момент заключается в удобстве операции ввода-вывода данных Отрицательный момент в том, что существует два представления (0), и операция алгебраического сложения требует анализа знаков и модулей операндов и выбора фактической операции сложения или вычитания.


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.052 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал