Представление информации в ЭВМ

Понятие чисел конечной точности, диапазоны представления чисел. Примеры позиционных систем счисления, однородные и неоднородные системы счисления, их свойства. Формы представления чисел в ЭВМ. Арифметические операции в двоичной системе счисления.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 19.03.2015
Размер файла 961,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

.

Выполнение данного требования способствует декодированию.

6. Непрерывность. Непрерывной последовательности изменений значения цифр должна соответствовать непрерывная последовательность изменений значения тетрад.

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

Наибольшее распространение в ВТ нашел код прямого замещения с весом разрядов 8421. Этот код самый наглядный и удобный, так как в соответствии с названием кода десятичная цифра в нем соответствующим значением двоичного кода. Однако код 8421 не удовлетворяет требованию дополнительности, поэтому действия в этом коде с изменением знака десятичного числа связаны с инверсией разрядов или взятия дополнения, то есть требуют дополнительных коррекций и/или временных затрат.

Достоинствами двоично-кодированной десятичной системы счисления относительно двоичной являются:

· отсутствие необходимости перевода исходных данных и результатов из одной системы счисления в другую;

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

· более широкие возможности для автоматического контроля из-за наличия в D-кодах избыточных комбинаций.

D-коды применяют для решения экономических задач, которые характеризуются большим объемом исходных данных, сравнительной простотой и малым объемом выполняемых над ними преобразований и большим количеством результатов вычислений. Эта система широко используется в калькуляторах и персональных микроЭВМ.

1.11 Формы представления чисел в ЭВМ

ЭВМ оперирует с числами, содержащими конечное число разрядов. Количество разрядов ограничено длиной разрядной сетки машины.

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

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

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

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

Обычно в ЭВМ используются два способа расположения запятой (рис. 2.6): перед старшим разрядом (дробные числа) или после младшего (целые числа).

Рис. 2.6. Разрядные сетки ЭВМ для представления чисел с фиксированной запятой: а - для правильных дробей; б - для целых чисел

Диапазоны представления модулей для этих разрядных сеток имеют вид:

а) для дробных чисел:

|Хmax| = 0,111…11(2) = 1-2-n;

|Хmin| = 0,000…01(2) = 2-n;

1-2-n |X| 2-n ; (2.14)

б) для целых чисел:

| Хmax | = 111…11(2) = 2n-1;

| Хmin | = 000…01(2) = 1;

2n-1 | X | 1. (2.15)

Важной характеристикой является динамический диапазон модулей представляемых чисел:

. (2.15)

Для дробных чисел

; (2.16)

для целых чисел

. (2.17)

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

. (2.18)

Если при выполнении вычислений значения чисел выйдут за пределы допустимого диапазона, то возникнет ошибка. Чтобы этого избежать, исходные данные необходимо масштабировать:

X = [X]Кx , (2.19)

где Кх - масштабный коэффициент.

Длину разрядной сетки с фиксированной запятой в операционных устройствах (ОУ) современных ЭВМ принято выбирать кратной байту (8 бит). Для мини- и микроЭВМ использует 1, 2 или 4 байта, для ЭВМ общего назначения длина разрядной сетки составляет 4 байта (32 бита) или 8 байт (64 бита). Длина слова в памяти ОУ также кратна 1 байту.

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

Форма представления чисел с плавающей запятой позволяет избежать трудоёмкого масштабирования исходных чисел и значительно увеличить диапазон и точность представляемых чисел [9,10].

Представление чисел в форме с плавающей запятой в общем виде определяются выражением

Х = ± Мx Qp, (2.20)

где Мx - мантисса числа;

Qр - характеристика числа;

Q - основание системы счисления (Q = 2 или Q = 16);

p - порядок числа.

Мантисса и порядок задаются в системе счисления с основанием Q. Знак числа совпадает со знаком числа мантиссы.

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

Мx = х0, х1, х2 ,…, хт,

где х0 - код знака числа.

Для Q = 2 : Мx = х0, 1, х2 ,…, хт; для Q = 16 : М = х0, х1*, х2*…хт* хm/4* ,

где хi* - шестнадцатеричная цифра, х1* > 0.

Порядок числа p - целое число со знаком - имеет смысл указателя истинного положения запятой в числе.

Форматы чисел (разрядная сетка) для плавающей запятой в двоичной системе счисления с указанием веса разрядов представлены на рис. 2.7.

Рис. 2.7. Формат чисел с плавающей запятой:

а - изображение порядков положительными и отрицательными числами; у0 - код знака порядка; б - изображение кода числа со смещенным порядком в формате слова; в - изображение шестнадцатеричного числа в формате слова со смещенным порядком

В памяти компьютера, как правило, число с плавающей точкой занимает 4 ячейки памяти. Причем внутренне представление вещественного числа сводится представлению пары целых чисел: мантиссы и порядка. В старшем бите 1-го байта храниться знак числа: 0 обозначает плюс, 1 - минус. Оставшиеся 7 бит 1-го байта содержат машинный порядок. В следующих трех байтах охраняться значащие цифры мантиссы (24 разряда). Схематично это можно представить с виде таблицы 2.5

Таблица 2.5. Представление числа с плавающей точкой в памяти ЭВМ

±

МАНТИССА

1-й байт

2-й байт

3-й байт

4-й байт

В данном случае в семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапазоне от 0 до 127 в десятичной системе счисления, то есть всего 128 значений. Порядок, может быть как положительным так и отрицательным и поэтому разумно эти 128 значений разделить поровну между положительным и отрицательным значениями порядка: от -64 до 63.

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

Связь между машинным порядком (Мр) и математическим (р) в данном случае выражается формулой:

Мр = р + 64 (2.21)

Полученная формула записана в десятичной системе, а в двоичной системе формула имеет вид:

=p2+10000002 (2.22)

Таким образом для записи внутреннего представления вещественного числа в 4-х байтовой ячейке необходимо:

1) перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами;

2)нормализовать двоичное число;

3) найти машинный порядок в двоичной системе счисления;

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

Пример1. Записать внутреннее представление числа 250,1875 в форме с плавающей точкой.

Решение.

1) Приведем исходное число в двоичную систему счисления с 24 значащими цифрами с помощью стандартных алгоритмов и способов перевода (п. 2.7):

250,187510=1111 1010, 0011 0000 0000 00002.

2) Запишем в форме нормализованного двоичного числа с плавающей точкой: 0,1111 1010 0011 0000 0000 00001021000. Здесь мантисса, то есть основание системы счисления (210=102) и порядок (810=10002) записаны в двоичной системе.

3) Вычислим машинный порядок в двоичной системе счисления:

Mp2= 1000 + 100 0000 =100 1000.

4) Запишем представление числа в 4-х байтовой ячейке памяти с учетом знака числа:

0

1001000

11111010

00110000

00000000

Пример2.

По шестнадцатеричной форме внутреннего представления числа в форме с плавающей точкой C9811000 восстановить само число.

Решение.

1. Перейдем к двоичному представлению числа в 4-х байтовой ячейке, воспользовавшись стандартными средствами перевода (п.2.7):

1100 1001 1000 0001 0001 0000 0000 0000

1

1001001

10000001

00010000

00000000

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

р=10010012 -10000002=10012=910. (2.23)

3. Запишем в форме нормализованного двоичного числа с плавающей точкой с учетом знака числа:

-0,1000 0001 0001 0000 0000 0000 21001

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

-100000010,0012.

5. Переведем число в десятичную систему счисления:

-100000010,0012= -(128+121+12-3)= -258,12510

Диапазон представления нормализованных чисел с плавающей запятой, когда порядок может принимать как положительное, так и отрицательное значение, определяется так (для Q = 2):

(2.23)

Динамический диапазон

. (2.24)

Сравнивая выражения (2.18) и (2.24) можно показать, что при одной и той же длине разрядной сетки диапазон представляемых чисел с плавающей запятой значительно шире, а относительная погрешность представления e=1/d значительно меньше, чем для чисел с фиксированной запятой. Однако устройства, реализующие операции с числами, представленными в форме с плавающей запятой, характеризует большая сложность и меньшее быстродействие.

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

Для представления чисел с плавающей запятой широко используется шестнадцатеричная система счисления (Q = 16), при этом смещенный порядок числа представляется двоичным целым числом, а мантисса - шестнадцатеричной дробью (см. рис. 2.7в). Тогда выражение (2.20) примет вид

Х = ±16р Мx. (2.25)

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

1.12 Машинный нуль и переполнение разрядной сетки

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

В первом случае числа по абсолютной величине становятся меньше наименьшего значащего числа, которое можно записать в разрядную сетку: |X| < Xmin, а во втором случае они могут стать больше наибольшего представимого числа |X| > Xmax.

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

Во втором случае описывается возникновение переполнения разрядной сетки. Различают два вида переполнения: положительное, когда X > + Xmax и отрицательное, если X < -Xmax.

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

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

1.13 Точность представления чисел в ЭВМ

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

Абсолютная погрешность - это разность между истинным значением входной величины Х и её значением, полученным из машинного изображения [Х], то есть

[X] = X - [Х]. (2.26)

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

, (2.27)

то есть в машинах с фиксированной запятой абсолютная погрешность постоянна и равна половине младшего разряда.

Относительная погрешность представления определяется как отношение усреднённой абсолютной погрешности к самому числу = | X |.

Так как само число X меняется в пределах

,

то и относительная погрешность является величиной переменной, меняющейся соответственно в пределах

Для машин с фиксированной запятой она определятся следующим образом:

(2.28)

Таким образом, относительная погрешность для машин с фиксированной запятой зависит от величины числа и колеблется в пределах от 2-(n+1) для больших чисел до 2-1 - для малых; Причём при А2-n относительная погрешность может достигать 100%.

В машинах с плавающей запятой абсолютная погрешность представления числа определяется следующим образом:

= М· 2р, (2.29)

где M - погрешность представления мантиссы, которая определяется так же, как абсолютная погрешность в машинах с фиксированной запятой;

М = 2-(n+1);

р - порядок числа, который изменяется в пределах

(2.30)

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

(2.31)

Относительная погрешность представления чисел в машинах с плавающей запятой определяется по общему правилу

(2.32)

то есть не зависит от порядка числа и изменяется в следующих пределах:

(2.33)

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

1.14 Формы представления двоичных и десятичных чисел в ЭВМ

Знаковый разряд двоичных чисел весом 2m для целых и 20 для дробных чисел участвует совместно с числовыми разрядами в арифметических операциях. Знаковый разряд так же, как цифровые разряды, принимает значение 1 (это знак «-») и 0 (это знак «+»).

Для машинного представления отрицательных чисел используют прямой, обратный и дополнительный коды. При этом знаки чисел кодируются двоичными цифрами: «+» цифрой 0, а «-» цифрой 1.

Любой код положительного числа совпадает с самим числом.

Прямой код (ПК) числа - простейший код, в котором к абсолютной величине числа слева приписывается знаковый признак.

Для целого n-разрядного двоичного числа X связь между числом  X и его изображением в прямом коде имеет вид

(2.34)

Для правильной двоичной дроби прямой код получим исходя из следующего соотношения:

(2.35)

Пример. Найти прямой код для отрицательного числа -3 (1011) и -0.3 (0.0011) Пусть разрядная сетка имеет 8 разрядов и один разряд отводится для знака.

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

На основании (2.33) и (2.34) получаем:

ХПК=1.0000011 - для целых чисел;

ХПК=1,0000011 - для правильных дробей.

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

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

Для n - разрядной сетки имеем для целых чисел:

(2.36)

Для правильной двоичной дроби

(2.37)

Из соотношений (2.36) и (2.37) видно, что положительное число не меняет своего изображения в обратном коде, а обратный код отрицательного n-разрядного двоичного числа определяется из равенства:

[X]0 = 1. - для целых чисел;

[X]0 = 1, - для правильных дробей,

(2.38)

где = 1 - .

Пример. Найти обратный код для отрицательных чисел X= -1011 и Y= -0,1011. Результат представить 8-битным числом.

Решение. На основании выражений (2.38) для X и Y получим:

XОК = 1.1110100; YОК = 1,0100111.

В обратном коде можно изображать максимальное положительное число Xmax = 0,11...11 = 1-2-n и наибольшее отрицательное число Хmin = - 0,11...11 = - (1-2-n) :

XmaxОК = 0,11…11;     XminОК = 1,00…00.

Нуль в обратном коде имеет два изображения:

[ + 0]0 = 0,00...00;

[ - 0]0 = 1,11...11.

Изображение чисел в дополнительном коде (ДК) наиболее распространенное и не требует каких-либо дополнительных аппаратурных дополнений. Изображение положительных чисел равно значению самих чисел. Например, изображение положительного числа +3 в дополнительном коде будет выглядеть следующим образом:

ХДК=0.0000011

Изображение отрицательных чисел представляет собой дополнение до 2m-1 для целых чисел и до 21 - для дробных. Поэтому сумма изображений двух одинаковых по абсолютному значению чисел разного знака равна 2m-1/21. В общем виде функцию изображения ДК для целых чисел можно представить следующим образом:

(2.39)

для дробных

(2.40)

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

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

1) записать число в прямом коде;

2) для ПК найти соответствующий обратный код;

3) к ОК числа прибавить к младшему разряду единицу;

4) полученное число будет дополнительным кодом заданного числа.

Например, найдем дополнительный код для отрицательного числа -6 (1.0110).

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

ХПК=1.0000110 - прямой код числа -6;

ХОК=1.1111001 - обратный код числа -6;

+1;

ХДК=1.1111010 - дополнительный код числа -6.

Второй способ перевода заключается в следующем:

1) записать число в прямом коде;

2) найти, просматривая с младших разрядов, первую встретившуюся единицу и все разряды слева от нее перевести в обратный код (за исключением знаковой);

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

По второму способу для того же числа получаем следующую последовательность действий:

ХПК=1.00001|10

ХДК=1.1111010

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

Во второй главе учебного пособия рассмотрели общие сведения о представлении информации в ЭВМ, основные вопросы, касающиеся информации, систем счисления и чисел, такие как представление информации в цифровых автоматах (ЦА); позиционные системы счисления; методы перевода чисел; форматы представления чисел с плавающей запятой.

Контрольные вопросы

1. Какие из операций с плавающей запятой считаются наиболее сложными? Ответ обоснуйте на конкретных примерах.

2. По каким причинам наибольшее распространение в ЭВМ получила двоичная система счисления?

3. Переведите числа 329; 701; 0,280 из десятичной системы счисления в двоичную, троичную и пятеричную.

4. В чем суть организации циклического переноса и циклического займа при выполнении арифметических операций в обратном коде?

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

6. Можно ли предугадать одну из двух форм изображения нулевого результата арифметических операций в обратном коде?

7. Переведите числа 329; 701; 0,280 из десятичной системы счисления в двоичную в полулогарифмической форме с основанием порядка X = 16, изображая порядок в смещенном дополнительном коде, а мантиссу -- в обычном дополнительном.

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

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

10. Какие из следующих цепочек символов являются шестнадцатеричными числами: BED, CAB, DEAD, DECADE, ACCEDED, BAG, DAD?

11. Сколько различных положительных чисел можно выразить в k разрядах, используя числа с основанием системы счисления г?

12. Большинство людей с помощью пальцев на руках могут сосчитать до 10. Однако компьютерщики способны на большее. Представим, что каждый палец соответствует одному двоичному разряду. Пусть вытянутый палец означает 1, а загнутый - 0. До скольки вы сможете сосчитать, используя пальцы обеих рук? А если рассматривать пальцы на руках и ногах? Представим, что большой палец левой ноги - это знаковый бит для чисел с дополнением до двух. Сколько чисел можно выразить таким способом?

13. Система с дополнением до десяти аналогична системе с дополнением до двух. Отрицательное число в системе с дополнением до десяти получается путем прибавления 1 к соответствующему числу с дополнением до девяти без учета переноса. По какому правилу происходит сложение в системе с дополнением до десяти?

14. Получить шестнадцатеричную форму внутреннего представления числа в формате с плавающей точкой в 4-х байтной ячейке памяти: А=26.28125

15. Получить шестнадцатеричную форму внутреннего представления числа в формате с плавающей точкой в 4-х байтной ячейке памяти: А=-139.375

16. По шестнадцатеричной форме внутреннего представления вещественного числа в 4-х байтовой ячейке восстановить само число: А= C5DB0000

17. По шестнадцатеричной форме внутреннего представления вещественного числа в 4-х байтовой ячейке восстановить само число: А=45ED0000

2. ДВОИЧНАЯ АРИФМЕТИКА

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

2.1 Правила двоичной арифметики

Сложение и вычитание двоичных чисел основаны на правилах этих действий в пределах одного разряда и правилах учета межразрядных переносов и займов.

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

Таблица 3.1

Правила арифметических операций

Сложение

Вычитание

Умножение

0+0=0

0-0=0

0 · 0 = 0

0+1=1

заем 0-1=1

0 · 1 = 0

1+0=1

1-0=1

1 · 0 = 0

1+1=1перенос

1-1=0

1 · 1 = 1

Перенос, возникающий в i-м разряде, передается в следующий (i+1)-разряд с увеличенным вдвое весом и уменьшенным вдвое значением.

Заем из (i+1)-го разряда передается в i разряд с уменьшенным вдвое весом и увеличенным вдвое значением.

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

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

единица из разряда с весом 24 была занята в разряд с весом 23; эта единица стала там двойкой, и в разряде с весом 23 выполнилось вычитание 10-1 = 1; на месте разряда с весом 24 в уменьшаемом фактически остался нуль.

Распространение займа сразу на несколько более старших разрядов можно проследить на примере вычитания чисел 101110,001(2) и 101,011(2). Записав числа друг под другом:

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

Пример. Уменьшаемое 1000000(2), вычитаемое 1(2), разность составляет

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

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

В основном арифметические операции выполняются на одном общем устройстве, называемом арифметико-логическим устройством (АЛУ).

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

2.2 Арифметические операции в двоичной системе счисления

Рассмотрим основные операции (сложение и вычитание) с использованием ОК и ДК. Для примера возьмем числа 25, 31 и проведем с ними все возможные операции сложения и вычитания:

1) 31+25=56

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

31 0.0011111

25 0.0011001

-------------

0.0111000 32+16+8=56

2) 31+(-25)=+6

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

-25ПК 1.0011001

-25ДК 1.1100111

После перевода числа в дополнительный код проводим основной цикл сложения:

+31 0.0011111

+

-25дк 1.1100111

-------------

0.0000110 +6

так как «0» в знаковом разряде, то СдопПК.

В случае появления знакового разряда со значением «1», результат представлен в ДК и необходим перевод в ПК для получения результата.

3) -31+25=-6

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

-31ПК 1.0011111

-31ОК 1.1100000

-31 1.1100000

+

25 0.0011001

-------------

1.1111001

После основного сложения, так как результат отрицательный, производим его преобразования в прямой код, основываясь на методике, описанной в п. 2.14. В результате получаем ПК=1.0000110, то есть число -6.

Сумматор ОК отличается от других сумматоров тем, что в них имеет место цепь обратной связи (циклический перенос). При появлении переноса из знакового разряда к результату необходимо добавить «+1» в младший разряд.

4) 31+(-25)=+6

В данном случае отрицательное число необходимо перевести в обратный код. После перевода получим -25ОК=1.1100110.

Производим операцию сложения в ОК:

31 0.0011111

+

-25ОК 1.1100110

-------------

0.0000101

+

+1

-------------

0.0000110 +6

5) 31-(-25)=+56

По правилам арифметики А-(-В) = А+В. В данном случае два отрицания превращаются в обычное сложение, и поэтому операция сложения в данном случае проводится аналогично примеру 1.

31 0.0011111

+

25 0.0011001

-------------

0.0111000 32+16+8=56

6) -31+(-25)=-56

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

-31 1.1100000

-25 1.1100110

-------------

1.1000110

+1

-------------

1.0111000

Полученный результат представлен в обратном коде, поэтому для получения ПК его необходимо проинвертировать. Получим 1.0111000 -56.

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

2.3 Выполнение операции сложения в D-кодах

2.3.a Сложение двоичных чисел

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

1) если ai+bi+pi < 10, то при выполнении действий над разрядами тетрады по правилам двоичной арифметики сразу получается правильный результат;

2) если ai+bi+pi 10, то возникает тетрадный перенос, который следует рассматривать как десятичный. Сумму следует скорректировать на +6 (+0110), так как перенос передан в старший разряд с весом 16 вместо 10. Признаком необходимости коррекции является выходной перенос в старшую тетраду (межтетрадный перенос);

3) если 15ai+bi+pi 10, то необходима такая же коррекция из-за превышения допустимого значения суммы (т.е. появляется запрещенная комбинация).

Запрещенные комбинации - это следующие значения:

10 = 1010

11 = 1011

12 = 1100

13 = 1101

14 = 1101

15 = 1111

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

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

Пример: 184+298=482 (код 8421)

0001 1000 0100

+

0010 1001 1000

---------------------

01000001 1100

+

0000 0110 0110

--------------------

0100 1000 0010

В данном примере в младшей тетраде присутствует запрещенная комбинация 1100, значит ее необходимо скорректировать на +6. Из второй тетрады в третью был межтетрадный перенос, поэтому к тетраде, из которой был перенос, прибавим +6 для коррекции результата.

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

Пример: произвести вычитание чисел в коде прямого замещения (код 8421)

615-396=219

0110 0001 0101

-

0011 1001 0110

-----------------------

001001111111

-

0000 0110 0110

-----------------------

0010 0001 1001

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

Сложение двоичных чисел в коде 8421+3 (D4). В данном коде перед сложением необходимо представить десятичное число в двоичном виде, основываясь на следующем правиле:

,

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

В данном коде при сложении могут возникнуть следующие случаи:

1) если ai+bi+pi 15, то результат необходимо скорректировать на величину -3 (-0011). Так как операция вычитания производится через операцию сложения, то -3 (-0011) заменяем на 1101 (+13) с блокировкой межтетрадного переноса;

2) если ai+bi+pi > 15, то при переходе в старшую тетраду (возник межтетрадный перенос) меняет свой вес с 16 на 10. Поэтому требуется коррекция на величину +3 (0011).

В качестве примера рассмотрим сложение чисел 184 + 298= 482.

0100 1011 0111

0101 1100 1011

---------------------

101010000010

-0011 +0011+0011

----------------------

0111 1011 0101

В данном случае в двух младших тетрадах возникли межтетрадные переносы, поэтому их необходимо скорректировать на величину +3. В старшей тетраде появилось число меньше 15, поэтому эту тетраду необходимо скорректировать на величину -3 (0011).

2.3.b Сложение в коде D1 с использованием обратного кода

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

Существует два способа нахождения обратного кода. В первом случае для получения обратного кода числа, записанного в виде тетрад, необходимо для каждой тетрады найти ее дополнение до числа 9. После этого необходимо провести сложение по правилам сложения чисел в коде прямого замещения с учетом необходимых поправок. После получения результата, если число отрицательное, необходимо снова найти дополнение каждой тетрады до числа 9 для получения необходимого результата (кода ПК). В качестве примера рассмотрим сложение чисел:

-298+127=-171

Предварительно перед сложением представим отрицательное число в обратном коде.

-298ПК: 1. 0010 1001 1000

-298ОК: 1. 0111 0000 0001

В данном случае для дополнения младшей тетрады до числа 9 необходимо число 1, для дополнения второй тетрады необходим ноль, а для дополнения старшей тетрады - число 7. После перевода отрицательного числа в ОК проводим основной цикл сложения:

1. 0111 0000 0001

0. 0001 0010 0111

--------------------------

1. 1000 0010 1000

Получили результат, записанный в обратном коде. Для получения конечного результата находим его дополнение до числа 9. Аналогично, дополняя разряды до девяти, получаем:

1. 0001 0111 0001 или -171.

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

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

1. 0010 1001 1000

+

0. 0110 0110 0110

-----------------------

1. 1000 1111 1110

1 0111 0000 0001

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

1. 0111 0000 0001

+

0. 0001 0010 0111

-----------------------

1. 1000 0010 1000

+

0110 0110 0110

-----------------------

1.1110 1000 1110

1.0001 0111 0001 -171

После основного цикла сложения находим прибавление +6 с последующей инверсией.

2.3.c Сложение в коде D4 с использованием кода ДК

Для получения дополнительного кода, записанного в коде D4, необходимо найти дополнение всех тетрад, кроме младшей, до числа 15, а младшую тетраду - до числа 16. После основного цикла сложения необходимо произвести коррекции. В случае возникновения межтетрадных переносов тетрады, из которых был перенос, необходимо скорректировать на число +3 (0011). Остальные тетрады корректируются на число +13 (1101) с блокировкой межтетрадных переносов. После коррекции, если число отрицательное, то для него также необходимо найти дополнения до 15- и 16-ти, как и в начале вычислений.

В качестве примера возьмем числа -298 и +127 и выполним операцию сложения.

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

-298ПК 1 0101 1100 1011

-298ДК 1 1010 0011 0101

Затем производим основной цикл сложения:

1. 1010 0011 0101

0. 0100 0101 1010

----------------------

1. 1110 1000 1111

0. 1101 1101 1101 коррекция

----------------------

1. 1011 0101 1100 результат

После основного цикла сложения получаем отрицательное число, которое представлено в дополнительном коде. Для получения прямого кода необходимо найти дополнения младшей тетрады до 16-ти, а всех остальных до 15-ти. Получаем следующий результат:

1. 0100 1010 0100

Учитывая, что полученное число записано в коде D4, после вычитания из каждой тетрады цифры 3 получим значение -171.

2.3.d Алгоритм сложения с избытком шесть

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

Для пояснения данного алгоритма выполним сложение 184+298=482 в коде прямого замещения с предварительной коррекцией первого слагаемого на плюс шесть. Получаем следующие тетрады для числа 184:

0111 1110 1010

Второе слагаемое записываем в виде тетрад без изменений.

0010 1001 1000

Проводим основной цикл сложения:

0111 1110 1010

+

0010 1001 1000

-------------------------

1010 1000 0010

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

1010 1000 0010

+

1010 0000 0000

--------------------

0100 1000 0010 482

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

2.4 Выполнение операции умножения в двоичной системе счисления

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

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

Наиболее просто операция умножения выполняется в ПК, при этом на первом этапе определяется знак произведения путем сложения знаковых цифр сомножителей по модулю два.

Традиционная схема умножения похожа на известную из школьного курса процедуру записи «в столбик». Вычисление произведения Р(р2n-1, p2n-2, …, p1, p0) двух n-разрядных двоичных чисел без знака А(a2n-1, a2n-2, …, a1, a0) и В(b2n-1, b2n-2, …, b1, b0) сводится к формированию частичных произведений (ЧП) Wi (по одному на каждую цифру множителя) с последующим суммированием полученных ЧП. Перед суммированием каждое частичное произведение должно быть сдвинуто на один разряд относительно предыдущего согласно весу цифры множителя, которой это ЧП соответствует. Поскольку операндами являются двоичные числа, вычисление ЧП упрощается: если цифра множителя bi равна 0, то Wi тоже равно 0, а при bi = 1 частичное произведение равно множимому (Wi=А). Перемножение двух п-разрядных двоичных чисел Р = АВ приводит к получению результата, содержащего 2n битов. Таким образом, алгоритм умножения предполагает последовательное выполнение двух операций - сложения и сдвига (рис. 3.1).

Рис. 3.1. Общая схема умножения со сдвигом суммы частичных произведений влево или вправо

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

В зависимости от способа получения суммы частичных произведений (СЧП) возможны четыре варианта реализации «традиционной» схемы умножения [10]:

1) начиная с младших разрядов множителя, со сдвигом суммы частичных произведений вправо и при неподвижном множимом;

2) начиная со старших разрядов множителя, при сдвиге суммы частичных произведений влево и неподвижном множимом;

3) начиная с младших разрядов множителя, при сдвиге множимого влево и неподвижной сумме частичных произведений;

4) начиная со старших разрядов множителя, со сдвигом множимого вправо и при неподвижной сумме частичных произведений.

2.4.a Умножение младшими разрядами множителя со сдвигом СЧП вправо при неподвижном множимом

Полученное выражение можно представить в виде схемы Горнера для вычисления полиномов

(3.1)

Это выражение может быть сведено к n-кратному выполнению цикла

при начальных условиях i=0; C0=0.

В каждом цикле множимое либо добавляется к СЧП (если bi=1), либо нет (если bi=0), после этого сумма умножается на 2-1, то есть сдвигается на один разряд вправо. После окончания n-го цикла образуется искомое произведение, то есть Cn=C=AB.

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

1213=156

128+16+8+4 =156

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

2.4.b Умножение младшими разрядами множителя со сдвигом множимого влево при неподвижном СЧП

Выражение представим в следующем виде:

. (3.2)

Вычисление этого выражения сводится к n-кратному выполнению цикла , где Ai=2Ai-1 при начальных значениях i=0, Co=0, A0=A.

В каждом цикле умножения множимое сдвигается на один разряд влево и либо прибавляется к СЧП (при bi=1), либо нет (при bi=0).

Например, выполним вычисление 1213=156:

0.0001100 множимое

0.0001101 множитель

0.0000000 СЧП

СЧП

00011000 сдвиг А на один разряд

000110000 сдвиг А на один разряд (bi=0)

0001100 СЧП

000111100 СЧП

0001100000 сдвиг А на один разряд

0010011100 СЧП+А (bi=1)

00011000000 сдвиг А на один разряд

000110000000 сдвиг А на один разряд (bi=0)

0001100000000 сдвиг А на один разряд (bi=0)

00011000000000 сдвиг А на один разряд (bi=0)

В результате имеем 128+16+8+4 =156.

2.4.c Умножение старшими разрядами множителя со сдвигом СЧП влево при неподвижном множимом

Выражение преобразуется к виду:

. (3.3)

При этом умножение сводится к n-кратному повторению цикла

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

Например, выполним вычисления 1213=156:

0.0001100 множимое

0.0001101 множитель

0000000 СЧП

00000000 сдвиг СЧП влево (bi=0)

000000000 сдвиг СЧП влево (bi=0)

0000000000 сдвиг СЧП влево (bi=0)

0001100 + А, т.к. (bi=1)

0000001100 СЧП

00000011000 сдвиг СЧП влево

0001100 + А, т.к. (bi=1)

00000100100

000001001000 сдвиг СЧП влево

0000010010000 сдвиг СЧП влево (bi=0)

0001100 + А, т.к. (bi=1)

0000010011100 СЧП

Получаем результат 128+16+8+4 = 156.

2.4.d Умножение старшими разрядами множителя со сдвигом множимого вправо при неподвижном СЧП

Выражение представляется в виде

. (3.4)

Тогда вычисление произведения может быть сведено к n-кратному выполнению цикла:

то есть в каждом цикле множимое сдвигается на один разряд вправо и в зависимости от значения управляющего разряда множителя либо прибавляется к СЧП, либо нет.


Подобные документы

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

    курсовая работа [232,6 K], добавлен 16.01.2012

  • Понятие и классификация систем счисления. Перевод чисел из одной системы счисления в другую. Перевод правильных и неправильных дробей. Выбор системы счисления для применения в ЭВМ. Навыки обращения с двоичными числами. Точность представления чисел в ЭВМ.

    реферат [62,0 K], добавлен 13.01.2011

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

    презентация [16,3 K], добавлен 07.06.2011

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

    контрольная работа [37,3 K], добавлен 13.02.2009

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

    лабораторная работа [142,3 K], добавлен 06.07.2009

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

    конспект произведения [971,1 K], добавлен 31.05.2009

  • Обработка информации и вычислений в вычислительной машине. Непозиционные и позиционные системы счисления. Примеры перевода десятичного целого и дробного числа в двоичную систему счисления. Десятично-шестнадцатеричное и обратное преобразование чисел.

    контрольная работа [41,2 K], добавлен 21.08.2010

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

    контрольная работа [138,9 K], добавлен 05.06.2010

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

    контрольная работа [1,2 M], добавлен 23.10.2009

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

    курсовая работа [59,9 K], добавлен 31.05.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.