Вопрос 7. Представление чисел в ЭВМ 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вопрос 7. Представление чисел в ЭВМ



В ЭВМ числа хранятся в ячейках ЗУ. Ячейки памяти ЭВМ представляют собой набор разрядов, в каждом из которых может храниться двоичная цифра 0 или 1. В зависимости от способа представления чисел в виде числовых кодов различают машины с фиксированной и плавающей запятой.

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

В ячейке памяти машины с фиксированной запятой один разряд, как правило, первый справа предназначается для записи знака числа, а остальные - цифровые. Некоторое постоянное число их отводится для записи целой части, оставшиеся - для хранения дробной части числа. Для изображения знака числа используются двоичные цифры: "+" = 0; "-" = 1.Если записывается число положительное, в знаковый ряд заносится нуль, и единица - если число отрицательное.

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

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

x = m*10p,

где |m|<1, а p - целое число.

Мантисса показывает последовательность цифр числа х, а порядок - положение запятой в числе.

Например, число 175,410 можно записать в виде: 175,4 = 0,1754*103, здесь m = 0,1754, p = +3. Для числа 0,00029 =0,029*10-2 = 0,29*10-3. Для каждого числа может быть найдено множество нормальных форм. Чтобы повысить точность представления чисел, в машинах используется нормализованная форма, в которой на мантиссу накладывается еще одно требование - первая ее цифра после запятой должна быть значащей, так что мантисса удовлетворяет неравенствам:

0,1<|m|<1

В некоторых ЭВМ в начале ячейки размещается мантисса, за ней порядок, в других они меняются местами. Знаки мантиссы и порядка кодируются так же, как в машинах с фиксированной запятой ("+" = 0; "-" = 1).

Диапазон чисел, представляемых в машинах с плавающей запятой, намного шире, чем диапазон чисел, представляемых в ЭВМ с фиксированной запятой. Определим его для разрядной сетки с n разрядами для порядка и m разрядами для мантиссы в двоичной системе:

Диапазон чисел определяется количеством разрядов, выделенных для записи порядка: чем больше величина m, тем шире диапазон. Длина же мантиссы никак не влияет на диапазон.

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

Современные ЭВМ имеют оба режима выполнения операций или только режим с плавающей запятой.

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

Различают прямой код, обратный код, дополнительный код. Эти коды определяются для двоичных дробных чисел вида x =? 0 x1x2...xn.

Прямой, обратный и дополнительный коды числа х обозначаются соответственно [x]пр, [x]обр, [x]доп.

Для неотрицательных чисел все три кода имеют одинаковый вид и совпадают с записью самого числа: X=[x]пр=[x]обр=[x]доп для x? 0

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

Пример

A10= +10 A2= +1010 [A]пр= 0: 1010. B10= -15 B2=-1111 [Б]пр= 1: 1111.

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

Пример

А10= +5, А2= +101 [А2]пр=[А2]обр=0: 101; В10= -13 В2=-1101 [В2]обр=1: 0010.

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

Пример

А10= +19 А2= +10011 [А2]пр=[А2]обр=[А2]доп=0: 10010 В10= -13 В2= -1101 [В2]доп=1: 0011.

Модифицированные обратные и дополнительные коды отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак "+" кодируется двумя нулевыми знаковыми разрядами, а знак "-"- двумя единичными разрядами.

Пример

А10= +9 А2= +1001 [А2]пр=[А2]обр=[А2]доп=0: 1001;

[А2]мобр=[А2]мдоп=00: 1001;

В10= -9 В2= -1001 [В2]доп=1: 0111 [В2]обр=1: 0110. [В2]мдоп=11: 0111 [В2]мобр=11: 0110.

Целью введения модифицированных кодов являются фиксация и обнаружение перполнения разрядной сетки. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов "01" свидетельствует о положительном переполнении разрядной сетки, "10" свидетельствует об отрицательном переполнении разрядной сетки.

8. Арифметические операции в ЭВМ с фиксированной запятой. Сложение чисел в АУ ЭВМ заменятся сложением модифицированных обратных или модифицированных дополнительных кодов в сумматорах соответствующего типа.

Контроль за переполнением осуществляется с помощью знаковых разрядов результатов: если они одинаковы, т.е. принимают значения 00 или 11, то результат - число нормальное, если знаковые разряды разные - произошло переполнение, причем при положительном результате в знаковых разрядах получается 01, при отрицательных - 10.

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

Следующий разряд совпадает со знаковым, если число по модулю меньше 1, и отличается от него, если число по модулю больше или равно 1. Этот разряд называется разрядом переполнения.

По команде "сложить два числа" машина выбирает оба слагаемых из ЗУ по указанным в команде адресам. В ячейках памяти числа хранятся в прямом коде, поэтому при передаче в регистры АУ, где будет производиться операция сложения, прямой код преобразовывается в модифицированный обратный (или дополнительный) код. Результат в сумматоре АУ получается в модифицированном обратном (или дополнительном) коде, и если его надо хранить в памяти машины, то по пути в ячейку ЗУ этот код преобразовывается в прямой.

Пример. Сложить числа x и у, используя сумматор с блокировкой переноса, если операция вычитания в ЭВМ сводится к сложению путем изменения знака вычитаемого на противоположный, так что вычисление разности x - у сводится к определению алгебраической суммы x + (-у).

В АУ ЭВМ умножение выполняется над прямыми кодами сомножителей; знак произведения получается путем сложения знаковых разрядов множимого и множителя в специальном одноразрядном сумматоре знака по следующим правилам: 0+0 =0;

1+0 =1; 0+1=1; 1+1=0

Таким образом, знак минус, как и в алгебре, получается, если у сомножителей разные знаки, и плюс - если одинаковые.

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

При делении в том случае, если модуль делимого больше модуля делителя (и, следовательно, частное получится больше 1), произойдет переполнение разрядной сетки. В АУ вырабатывается сигнал переполнения. Знак частного получается, как и при умножении, в одноразрядном сумматоре.



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 37; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.213.128 (0.008 с.)