- •Содержание
- •Введение
- •1 Перевод чисел из одной позиционной системы счисления в другую позиционную систему счисления
- •1.1 Цель занятия
- •1.2 Методические указания по организации самостоятельной работы студентов
- •1.3 Контрольные вопросы
- •1.4 Примеры аудиторных заданий
- •2.2 Методические указания по организации самостоятельной работы студентов
- •2 Арифметические операции сложения и вычитания, двоичных беззнаковых и знаковых чисел с фиксированной точкой в компьютерных системах
- •2.1 Цель занятия
- •2.3 Контрольные вопросы
- •2.4 Примеры аудиторных заданий
- •3 Арифметические операции сдвига, умножения и деления двоичных беззнаковых чисел с фиксированной точкой в компьютерных системах
- •3.1 Цель занятия
- •3.2 Методические указания по организации самостоятельной работы студентов
- •3.3 Контрольные вопросы
- •3.4 Примеры аудиторных заданий
- •4 Арифметические операции умножения и деления двоичных знаковых чисел с фиксированной точкой в компьютерных системах
- •4.1 Цель занятия
- •4.2 Методические указания по организации самостоятельной работы студентов
- •4.3 Контрольные вопросы
- •4.4 Примеры аудиторных заданий
- •Перечень ссылок
- •Приложение а
- •61166 Харків, просп. Леніна, 14
2 Арифметические операции сложения и вычитания, двоичных беззнаковых и знаковых чисел с фиксированной точкой в компьютерных системах
2.1 Цель занятия
Изучить алгоритмы выполнения арифметических операций сложения и вычитания двоичных беззнаковых и знаковых чисел с фиксированной точкой в компьютерных системах.
2.2 Методические указания по организации самостоятельной работы студентов
Одними из базовых арифметических операций в компьютерной системе являются арифметические операции сложения и вычитания, при выполнении которых используются поразрядные логические операции, а также операции сдвигов.
Компьютерная система выполняет сложение и вычитание операндов по правилам сложения и вычитания двоичных чисел рис.2.1.
Правила сложения: |
Правила вычитания: |
1. 0 + 0 = 0 |
1. 0 - 0 = 0 |
2. 0 + 1 = 1 |
2. 1 - 1 = 0 |
3. 1 + 0 = 1 |
3. 1 - 0 = 1 |
4. 1 + 1 = 10 |
4. 10 - 1 = 1 |
Рисунок 2.1 - Правила сложения и вычитания двоичных чисел
При
сложении беззнаковых операндов,
находящихся в регистрах процессора,
алгоритм выполнения операции отслеживается
по счетчику тактов, начиная с младшего
бита, и количество тактов равно разрядности
регистра процессора. Для выполнения
алгоритма сложения двоичных беззнаковых
чисел в компьютерных системах можно
ввести следующие обозначения:
- значение слагаемого в регистре
;
- значение слагаемого в регистре
;
- перенос в следующий разряд;
- сумма в регистре
.
Например, необходимо перевести в двоичную
систему счисления, а затем сложить два
числа (
)
и (
),
записанных в десятичной системе счисления
(по правилам сложения двоичных беззнаковых
чисел). Длина разрядной сетки операндов
равна пяти битам. Используя вышеописанные
правила, мы находим сумму двоичных чисел
как показано на рис. 2.2 и в таблице 2.1.
Проблем не возникает до тех пор, пока
значение результата не превышает
разрядной сетки операнда.
;
;
regB |
= |
0 |
0 |
1 |
1 |
1 |
regC |
= |
0 |
0 |
0 |
1 |
0 |
Рисунок 2.2 - Исходные данные для выполнения операции сложения двух двоичных беззнаковых чисел
Таблица 2.1 - Алгоритм сложения двух двоичных беззнаковых чисел
Такты |
|
|
|
|
1 |
1 |
0 |
0 |
1 |
2 |
1 |
1 |
1 |
0 |
3 |
1 |
0 |
1 |
0 |
4 |
0 |
0 |
0 |
1 |
5 |
0 |
0 |
0 |
0 |
В результате сложения двух двоичных беззнаковых чисел получена сумма, представленная на рис.2.3.
regA |
= |
0 |
1 |
0 |
0 |
1 |
Рисунок 2.3 - Результат выполнения алгоритма сложения двух двоичных беззнаковых чисел
При
выполнении арифметических операций
непосредственное участие в алгоритме
сложения и вычитания принимает
операционный автомат (
)
(рис.2.4). На рис.2.4 приняты следующие
сокращения:
- регистр
для хранения операнда
;
- регистр
для хранения операнда
;
- регистр
для хранения суммы;
-
одноразрядный сумматор;
- флаг
(триггер) переноса;
- сигнал
сдвига влево регистра на один разряд;
-
разрядность регистра (процессора).
На этой функциональной схеме прямоугольниками обозначены регистры (устройства для хранения информации), трапецией - комбинационные схемы (устройства для преобразования информации без ее запоминания). В состав ( ) входят регистры, триггеры, комбинационные схемы, связанные между собой и таким образом, чтобы можно было выполнить определенный алгоритм (алгоритмы). Операционный аппарат представляет собой простой цифровой процессор. С помощью специальных управляющих сигналов, процессор определяет, какую именно арифметическую операцию - сложения, вычитания, умножения или деления - он будет выполнять. Структура операционного аппарата для выполнения арифметических операций двоичных беззнаковых чисел приведена на рис.2.4.
Рисунок 2.4 - Функциональная схема ( ) для операции сложения двоичных беззнаковых чисел
Для
того, чтобы компьютерная система могла
оперировать как положительными, так и
отрицательными числами, в разрядную
сетку компьютерного представления
числа вводится знаковая часть. Разработчики
компьютерных систем самый крайний левый
бит отвели под знак и приняли следующее
обозначение: если самый
крайний левый бит в разрядной сетке
представления числа содержит (
)
- это означает положительное двоичное
число; если самый
крайний левый бит в разрядной сетке
представления числа содержит (
)
- это означает отрицательное двоичное
число. На рис.2.5 представлен формат числа
в двоичной системе счисления со знаковым
битом.
Рисунок 2.5 - Формат числа в двоичной системе счисления со знаковым битом
Исходя из вышесказанного будем обозначать целые знаковые числа в виде:
,
(2.1)
где
-
знаковый бит числа (
);
-
цифры слева от запятой.
Неправильные дроби:
,
(2.2)
где - знаковый бит числа ( );
- цифры слева от запятой;
-
цифры справа от запятой.
А правильные дроби:
,
(2.3)
где - знаковый бит числа ( );
- цифры справа от запятой.
В связи с тем, что алгоритмы выполнения операций в компьютерных системах имеют свою специфику, возникает проблема представления отрицательных чисел.
Ее решают за счет использования особых способов кодирования числовых данных.
Рассмотрим три наиболее распространенных кода, которые применяются на практике: прямой код, обратный код, дополнительный код.
Прямой код. Наиболее естественный код.
Формируется следующим образом: в знаковый бит ( ) числа помещают знак числа ( - если число положительное и - если число отрицательное ), а остальные биты используют для абсолютного значения (модуля) числа.
Правило преобразования чисел в прямом коде можно записать следующим образом:
,
(2.4)
где
-
вес старшего разряда в
-
разрядной сетке,
.
Отображение числовой оси двоичных чисел на числовую ось - битных наборов (прямой код ) для компьютерной системы показано на рис. 2.6.
Рисунок 2.6 - Отображение числовой оси двоичных чисел на числовую ось - битных наборов (прямой код )
В табл.2.2. представленны данные с помощью которых построены числовые оси на рис.2.6.
Таблица 2.2 - Данные с помощью которых построены числовые оси на рис.2.6.
А(10) |
А(2) |
А(ПК) |
З |
7 |
0111 |
0,111 |
+7 |
6 |
0110 |
0,110 |
+6 |
5 |
0101 |
0,101 |
+5 |
4 |
0100 |
0,100 |
+4 |
3 |
0011 |
0,011 |
+3 |
2 |
0010 |
0,010 |
+2 |
1 |
0001 |
0,001 |
+1 |
0 |
0000 |
0,000 |
+0 |
8 |
1000 |
1,000 |
-0 |
9 |
1001 |
1,001 |
-1 |
10 |
1010 |
1,010 |
-2 |
11 |
1011 |
1,011 |
-3 |
12 |
1100 |
1,100 |
-4 |
13 |
1101 |
1,101 |
-5 |
14 |
1110 |
1,110 |
-6 |
15 |
1111 |
1,111 |
-7 |
Диапазон
представимых чисел:
.
Положительный момент заключается в
удобстве операции ввода-вывода данных.
Отрицательный момент в том, что существует два представления ( ) и операция алгебраического сложения требует анализа знаков и модулей операндов, и выбора фактической операции сложения или вычитания.
Обратный
код. Обратный
-
разрядный двоичный код положительного
целого числа состоит из одноразрядного
кода знака (
),
за которым следует (
)
разрядное двоичное представление модуля
числа, то есть обратный код для
положительного числа совпадает с прямым
кодом.
Обратный - разрядный двоичный код отрицательного целого числа состоит из одноразрядного кода знака ( ), за которым следует ( ) разрядное двоичное число, представляющее собой инвертированное ( ) разрядное представление модуля числа, то есть для отрицательного числа все цифры числа заменяются на противоположные, а именно ( на , а на ) и в знаковый разряд заносится единица.
Обратный код числа определяется соотношением:
,
(2.5)
где
- максимальное
число в
- разрядной сетке.
Отображение числовой оси двоичных чисел на числовую ось - битных наборов (обратный код ) для компьютерной системы показано на рис. 2.7.
Рисунок 2.7 - Отображение числовой оси двоичных чисел на числовую ось - битных наборов (обратный код )
В табл.2.3 представленны данные с помощью которых построены числовые оси на рис. 2.7.
Таблица 2.3 - Данные с помощью которых построены числовые оси на рис.2.7.
А(10) |
А(2) |
А(ПК) |
З наки |
7 |
0111 |
0,111 |
+7 |
6 |
0110 |
0,110 |
+6 |
5 |
0101 |
0,101 |
+5 |
4 |
0100 |
0,100 |
+4 |
3 |
0011 |
0,011 |
+3 |
2 |
0010 |
0,010 |
+2 |
1 |
0001 |
0,001 |
+1 |
0 |
0000 |
0,000 |
+0 |
1 5 |
1111 |
1,111 |
-0 |
14 |
1110 |
1,110 |
-1 |
13 |
1101 |
1,101 |
-2 |
12 |
1100 |
1,100 |
-3 |
11 |
1011 |
1,011 |
-4 |
10 |
1010 |
1,010 |
-5 |
9 |
1001 |
1,001 |
-6 |
8 |
1000 |
1,000 |
-7 |
Диапазон представимых чисел: . Положительный момент заключается в том, что при сложении обратных кодов чисел как беззнаковых чисел получаем обратный код суммы.
Отрицательный момент заключается в том, что существует два представления ( ) и при выполнении операций сложения в обратном коде требуется коррекция суммы с помощью циклического переноса единицы переполнения из знаковых разрядов суммы.
Дополнительный код. Наиболее распространенный способ представления отрицательных целых чисел в компьютерных системах.
Он позволяет заменить операцию вычитания на операцию сложения, чем упрощает архитектуру компьютерной системы.
Дополнительный
код является дополнением числа до
некоторого граничного числа
.
Дополнительный код положительного
числа совпадает с прямым кодом.
Для получения дополнительного кода отрицательного числа существует три способа:
1) все цифры модуля исходного числа заменяются на взаимно обратные, то есть производится инверсия всех цифр числа, затем к полученному значению добавляется единица в младшем разряде;
2) из модуля числа вычитается ( ) младший бит, а затем инвертируются все разряды; 3) необходимо записать - битный модуль числа.
Затем просматривать число справа налево, сохранить все младшие нули и первую встретившуюся ( ), а остальные биты инвертировать.
Дополнительный код числа определяется соотношением:
,
(2.6)
где
равняется весу не существующего в данном
числе разряда, расположенного слева от
знаковой цифры.
Отображение
числовой оси двоичных чисел на числовую
ось
- битных наборов (дополнительный код )
для компьютерной системы показано на
рис. 2.8. Диапазон представимых чисел:
.
Свойства дополнительного кода: при сложении чисел в дополнительном коде как беззнаковых чисел получаем дополнительный код суммы.
Знаковые биты суммируются обычным образом, а возникающий при их сложении перенос игнорируется; любое число в дополнительном коде можно считать младшими битами («хвостом») числа любой длины, если содержимое знакового бита копировать влево.
Рисунок 2.8 - Отображение числовой оси двоичных чисел на числовую ось - битных наборов (дополнительный код )
Эта операция называется расширением знака. Используется, когда исходные операнды в операциях сложения и вычитания имеют разную длину.
В табл.2.4 представленны данные с помощью которых построены числовые оси на рис.2.8.
Т
аблица
2.4 - Данные с помощью которых построены
числовые оси на рис.2.8.
А(10) |
А(2) |
А(ПК) |
Знаки |
7 |
0111 |
0,111 |
+7 |
6 |
0110 |
0,110 |
+6 |
5 |
0101 |
0,101 |
+5 |
4 |
0100 |
0,100 |
+4 |
3 |
0011 |
0,011 |
+3 |
2 |
0010 |
0,010 |
+2 |
1 |
0001 |
0,001 |
+1 |
0 |
0000 |
0,000 |
0 |
15 |
1111 |
1,111 |
-1 |
14 |
1110 |
1,110 |
-2 |
13 |
1101 |
1,101 |
-3 |
12 |
1100 |
1,100 |
-4 |
11 |
1011 |
1,011 |
-5 |
10 |
1010 |
1,010 |
-6 |
9 |
1001 |
1,001 |
-7 |
8 |
1000 |
1,000 |
-8 |
Свойства кодов:
1. Операции
должны выполняться над данными,
представленными в одном и том же коде:
,
,
;
2. Положительные
числа в
,
,
не меняют своего представления;
3. Результат выполнения операций сложения и вычитания над числами, представленными в , , или , являются , , или соответственно;
4. Двоичный
набор, представляющий (
)
в
и
,
является запрещенной комбинацией;
5. В отличие от , , в нельзя отбрасывать нули после знакового разряда в целой части и нули в конце дробной части отрицательного числа (разрешается отбрасывать ).
Для корректного выполнения операций в компьютерной системе существует регистр флагов табл.2.5.
Таблица 2.5 - Регистр флагов - FLAGS
Бит |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Флаг |
0 |
NT |
IOPL |
OF |
DF |
IF |
TF |
SF |
ZF |
0 |
AF |
0 |
PF |
1 |
CF |
|
В регистре флагов, находится группа флагов, которые отвечают за корректность выполнения арифметических операций. Эти флаги, служат признаками, представляющими общую характеристику результата выполнения арифметических операций. Наиболее широко применяются следующие арифметические флажки:
- флажок переноса (Flag Carry), обозначаемый (FC). Устанавливается в (1) в двух случаях: 1)если при выполнении операции сложения имеет место перенос из старшего бита результата (представляет собой расширение результата на 1 бит влево); 2) если при выполнении операции вычитания имеет место заем (borrow) в старший бит. Это возможно в случае, если уменьшаемое меньше вычитаемого. Если операнды интерпретируются как беззнаковые числа, данный флажок является признаком переполнения компьютерной системы.В операциях над знаковыми числами самостоятельного значения не имеет.
- флажок вспомогательного переноса или дополнительный перенос (Flag Auxiliary), обозначаемый (FA). При сложении показывает перенос, а при вычитании - заем из младшей тетрады (бит 3) результата. Используется в операциях двоично-десятичной арифметики.
- флажок нуля (Flag Zero), обозначаемый (FZ). Признак нулевого результата. Устанавливается в (1) когда результат выполнения операции равняется (0).
- флажок знака (Flag Sign), обозначаемый (FS). Повторяет состояние знакового бита.
- флажок переполнения (Flag Overflow), обозначаемый (FО). В операциях над знаковыми числами показывает, находится ли результат внутри диапазона представимых чисел:
-
– результат правильный;
-
– возникло переполнение. Следует
отметить, что (FO)
устанавливается в (1), если перенос в
старший разряд и из него не совпадают.
При выполнении операций сложения и вычитания чисел в дополнительных кодах обрабатывающее устройство компьютера не делает различий между знаковыми и беззнаковыми операндами.
То есть операнды должны интерпретироваться самим пользователем как знаковые или беззнаковые.
В операции вычитания используется дополнительный код вычитаемого.
Если длина операндов превышает длину машинного слова, то сложение и вычитание выполняют в несколько приемов, организуя программный цикл.
Операцию начинают с младших частей операндов, «продвигаясь» далее в сторону старших частей.
На каждом шаге должны обрабатываться возникающие переносы (или заемы), при этом могут возникнуть четыре случая.
Обозначения принятые на рис.2.9 - 2.11:
-
над стрелкой обозначает - (нет);
-
над стрелкой обозначает -(да);
-
- знаковый бит;
-
- старший значащий бит;
- - младший значащий бит.
Случай №1. При выполнении арифметической операции (рис.2.9) (а) возникла следующая ситуация:
1. Отсутствует переход из старшего значащего бита в знаковый.
2. Отсутствует переход из знакового бита за пределы разрядной сетки.
3. Флаг
переполнения
.
4. Флаг
переноса
.
5. Флаг
знака
повторяет
значение знакового бита.
6. Флаг
нуля
,
если результат выполнения арифметической
операции получился равен нулю, то
значение флага устанавливается равным
единице, в противном случае - нулю.
Случай №2. При выполнении арифметической операции (рис.2.9) (б) возникла следующая ситуация:
1. Есть переход из старшего значащего бита в знаковый.
2. Есть переход из знакового бита за пределы разрядной сетки.
3. Флаг переполнения .
4. Флаг
переноса
.
5. Флаг знака повторяет значение знакового бита.
6. Флаг нуля , если результат выполнения арифметической операции получился равен нулю, то значение флага устанавливается равным единице, в противном случае - нулю.
а)
б)
Рисунок 2.9 - Пример отсутствия переполнения разрядной сетки КС
Случай №3. При выполнении арифметической операции (рис.2.10) возникла следующая ситуация:
1. Есть переход из старшего значащего бита в знаковый.
2. Отсутствует переход из знакового бита за пределы разрядной сетки.
3. Флаг
переполнения
,
есть переполнение в области положительных
чисел.
4. Флаг переноса .
5. Флаг знака повторяет значение знакового бита.
6. Флаг нуля , если результат выполнения арифметической операции получился равен нулю, то значение флага устанавливается равным единице, в противном случае - нулю.
Случай №4. При выполнении арифметической операции рис.2.11 возникла следующая ситуация:
1. Отсутствует переход из старшего значащего бита в знаковый.
2. Есть переход из знакового бита за пределы разрядной сетки.
3. Флаг переполнения , есть переполнение в области отрицательных чисел.
4. Флаг переноса .
5. Флаг знака повторяет значение знакового бита.
6. Флаг нуля , если результат выполнения арифметической операции получился равен нулю, то значение флага устанавливается равным единице, в противном случае - нулю.
Рисунок
2.10 - Пример переполнения разрядной сетки
КС в области положительных чисел
Рисунок
2.11 - Пример переполнения разрядной сетки
КС в области отрицательных чисел
При выполнении арифметических операции знакового сложения и вычитания могут возникнуть следующие случаи:
Случай №1. Известно,
что
,
тогда:
.
Случай №2. Известно,
что
и
,
тогда:
.
(
)
эквивалентно переносу в знаковый разряд,
т.к.:
.
Тогда:
.
Случай №3. Известно,
что
и
,
тогда:
,
по сути, представляет собой дополнительный
код отрицательной разности:
,
так как:
.
Случай №4. Известно,
что
,
тогда:
.
Первое
(
)
игнорируется, т.к. эквивалентно переносу
в знаковый разряд, а
-
суммы модулей. При условии, что
.

наки