Деление двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика
Так как данные в памяти компьютера хранятся в ДК, операцию деления целесообразно выполнять в ДК.
За основу можно принять базовый алгоритм деления (без восстановления остатка), т. к. он предполагает использование отрицательного делителя, дополнительного кода для вычитания и учет знаков остатка и делителя на каждом шаге деления.
Делимое участвует в операции только на первом шаге, а далее используются остатки, которые могут быть как положительными, так и отрицательными. Поэтому не имеет смысла рассматривать алгоритмы деления в ДК, где знаки операндов обрабатываются отдельно от их числовых частей.
Таким образом, при делении чисел в ДК трудности, связанные с коррекцией результата (как при умножении в дополнительном коде), практически отсутствуют.
Пусть:
- разрядность (2s), - .
- разрядность (s), - .
- разрядность (s), - .
- разрядность(s), - .
Для проверки на корректность операции деления используется условие:
. Таким образом, при пробном вычитании делитель должен быть сдвинут на (s-1) разряд влево. Однако чтобы обеспечить регулярность процесса деления, делитель сдвигается влево на s разрядов, а перед пробным вычитанием делимое сдвигается на один разряд влево.
В каждом цикле сдвинутый остаток складывается с делителем, которому приписывается знак, противоположный знаку частичного остатка.
Алгоритм деления знаковых чисел отличается от алгоритма деления беззнаковых чисел способом формирования разрядных цифр частного.
Очередная цифра определяется на основе анализа знаков частичного остатка и делителя. Если знак полученного остатка совпадает со знаком делителя, то цифра частного равна (1), если нет - (0). При этом частное формируется в прямом или обратном коде (в зависимости от соотношения знаков делимого и делителя). На этапе пробного вычитания автоматически формируется старшая цифра частного, которая представляет его знак. Если знак полученного частичного остатка совпадает со знаком делителя, участвующего в операции пробного вычитания, деление является корректным. В противном случае имеет место переполнение разрядной сетки компьютерной системы.
Алгоритм деления целых двоичных знаковых чисел заключается в следующем:
- 1. Частному присваивается значение (0); (Сч. Т) - (s). Исходное значение частичного остатка равно (s) старшим разрядам делимого. 2. Частичный остаток удваивается сдвигом влево на (1) разряд, с занесением в младший разряд очередной цифры делимого. 3. Если частичный остаток и делитель разного знака, то они складываются, если же одного знака, то из частичного остатка вычитается делитель. 4. Частное сдвигается влево на (1) разряд. В освобождающийся младший разряд заносится очередная цифра частного: (1) - если знак делителя и остатка совпадают, (0) - в противном случае (Сч. Т) уменьшается на (1). 5. Пункты 2-4 повторяются до тех пор, пока (Сч. Т) не станет равным (0). 6. Частное и остаток сформированы в обратном коде. Если знак окончательного остатка не совпадает со знаком делимого, то выполняется его восстановление. Для получения ДК результата выполняется его коррекция в зависимости от соотношения знаков делимого и делителя.
При делении в дополнительном коде возможные комбинации знаков операндов образуют следующий перечень.
Случай №1 X > 0; Y > 0. Деление в этом случае ничем не отличается от деления положительных операндов в прямом коде. Коррекция не требуется;
Случай №2 X > 0; Y < 0. Этот случай легко сводится к обычному делению в прямом коде, если считать, что в наличии имеется (-Y) и (+Y).
Однако для формирования правильного знака частного и обратного кода отрицательного результата необходимо псевдознаковую цифру и цифры частного получать равными цифрам знаковых разрядов соответствующих остатков. Переполнение разрядной сетки здесь фиксируется по (). В конце деления для образования дополнительного кода и округления частного следует прибавить единицу к младшему разряду: (Z=Z'+1);
Случай №3 X < 0; Y > 0. Из отрицательного делимого должен вычитаться положительный делитель, в отличие от деления без восстановления остатка в прямом коде, когда на первом шаге (Х>0, Y<0). Поэтому псевдознаковая цифра частного (), полученная по знаку нулевого остатка в соответствии с алгоритмом деления без восстановления остатка, здесь указывает на переполнение разрядной сетки. Если же переполнения разрядной сетки нет, эта цифра является правильной знаковой цифрой частного (то есть, ).
Знаки всех других остатков в этом случае определяют инверсные значения цифр частного.
В результате будет записан обратный код отрицательного частного.
Для округления и получения дополнительного кода результата необходимо добавить единицу в младший разряд, если полученный остаток не равен нулю: (Z=Z'+1).
Случай№4 X < 0; Y < 0.
На первом шаге алгоритма для формирования правильного знака частного (), необходимо из отрицательного делимого вычитать отрицательный делитель ( соответствует переполнению разрядной сетки). Далее же этот случай сводится к третьему.
Здесь все цифры частного, включая псевдознаковую, равны знакам остатков.
В случае, когда полученный остаток равен нулю, к частному следует прибавить единицу
(Z=Z'+1).
При использовании методов с восстановлением остатка и без восстановления остатка сдвиг влево может вызвать передачу значащей цифры из старшего разряда остатка в знаковый, и остаток будет искажен.
Поэтому надо оперировать двумя знаковыми разрядами.
Правильный знак при этом находится в дополнительном знаковом разряде, а единица в основном относится к разряду переполнения (в случае правильных дробей - к разряду целых).
Знак остатка от деления должен совпадать со знаком делимого.
Например: случай №1
X > 0; Y > 0; Z > 0.
Необходимо разделить два знаковых числа:
Х = +21 - делимое;
Y = +7 - делитель;
Z = +3 - частное.
((+21) : (+7) = (+3)).
Для удобства возьмем длину разрядной сетки равную четырем битам, а именно: если (Z) и (Y) равняется четырем битам, то как было отмечено выше (X) должно быть восьмиразрядным значением, т. е длина разрядной сетки делимого в два раза больше делителя и частного. На первом шаге разрядная сетка делителя увеличивается на один разряд путем арифметического сдвига вправо. Далее, когда знаки делимого и делителя совпадают, то на втором шаге производится вычитание, когда знаки делимого и делителя не совпадают, то на втором шаге производится сложение. Затем анализируются знаковые биты частичного остатка и делителя, если они разные, то в частное записывается (0), если одинаковые, то в частное записывается (1). Далее анализируются знаки частичного остатка и делителя, если они разные, то после сдвига влево производится сложение частичного остатка с делителем, если одинаковые, то производится вычитание из частичного остатка делителя (или сложение с дополнительным кодом делителя).
Алгоритм деления приведен в табл. 4.10.
Таблица 4.10 - Алгоритм деление целых двоичных знаковых чисел методом без восстановления остатка.
Регистр (В) Делимое X |
Регистр (С) Делитель Y |
Регистр (А) Частное Z |
Счетчик тактов (Сч. Т) | |||||||||||||
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
4 |
(-) |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 | ||||||
1 |
1 |
0 |
1 |
1 |
3 | |||||||||||
0 |
1 |
1 |
1 |
0 |
1 | |||||||||||
(+) |
0 |
1 |
1 |
1 | ||||||||||||
1 |
1 |
1 |
0 |
2 | ||||||||||||
1 |
1 |
0 |
0 |
1 | ||||||||||||
(+) |
0 |
1 |
1 |
1 | ||||||||||||
1 |
0 |
0 |
1 |
1 |
1 | |||||||||||
0 |
1 |
1 |
1 | |||||||||||||
(-) |
1 |
0 |
0 |
1 | ||||||||||||
1 |
0 |
0 |
0 |
0 |
0 | |||||||||||
СТОП |
Случай №2 X > 0; Y < 0; Z < 0.
Необходимо разделить два знаковых числа:
Х = +21 - делимое;
Y = -7 - делитель;
Z = -3 - частное.
((+21) : (-7) = (-3)).
В этом случае знаки делимого и делителя не совпадают, поэтому на втором шаге производится сложение делимого и отрицательного делителя, а также необходима коррекция частного, т. е. после получения частного к последнему биту частного необходимо прибавить (1).
Алгоритм деления приведен в табл. 4.11.
Таблица 4.11 - Алгоритм деление целых двоичных знаковых чисел методом без восстановления остатка.
Регистр (В) Делимое X |
Регистр (С) Делитель Y |
Регистр (А) Частное Z |
Счетчик тактов (Сч. Т) | |||||||||||||
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
4 |
(+) |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 | ||||||
1 |
1 |
0 |
1 |
1 |
3 | |||||||||||
0 |
1 |
1 |
1 |
0 |
1 | |||||||||||
(-) |
0 |
1 |
1 |
1 | ||||||||||||
1 |
1 |
1 |
0 |
2 | ||||||||||||
1 |
1 |
0 |
0 |
1 | ||||||||||||
(-) |
0 |
1 |
1 |
1 | ||||||||||||
1 |
0 |
0 |
1 |
1 |
1 | |||||||||||
0 |
1 |
1 |
1 | |||||||||||||
(+) |
1 |
0 |
0 |
1 | ||||||||||||
1 |
0 |
0 |
0 |
0 |
0 | |||||||||||
СТОП | ||||||||||||||||
Счетчик тактов равняется (0), деление окончено, но как было сказано выше, в частном мы получили псевдо частное (Z' = 1100). Для получения истинного частного (Z), необходимо выполнить коррекцию, т. е. к (Z' +1) и тогда получаем истинное значение частного: Z = 1101. |
Случай №3 X < 0; Y > 0; Z < 0.
Необходимо разделить два знаковых числа:
Х = -21 - делимое;
Y = +7 - делитель;
Z = -3 - частное.
((-21) : (+7) = (-3)).
В этом случае знаки делимого и делителя не совпадают, поэтому на втором шаге производится сложение отрицательного делимого и положительного делителя.
Если последний частичный остаток не равен (0), то необходима коррекция частного, т. е. после получения частного к последнему биту частного необходимо прибавить (1).
Алгоритм деления приведен в табл. 4.12.
Таблица 4.12 - Алгоритм деление целых двоичных знаковых чисел методом без восстановления остатка.
Регистр (В) Делимое X |
Регистр (С) Делитель Y |
Регистр (А) Частное Z |
Счетчик тактов (Сч. Т) | |||||||||||||
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
4 |
(+) |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 | ||||||
1 |
0 |
1 |
1 |
0 |
0 |
3 | ||||||||||
1 |
0 |
0 |
0 |
1 |
1 | |||||||||||
(-) |
1 |
0 |
0 |
1 | ||||||||||||
1 |
0 |
0 |
0 |
1 |
2 | |||||||||||
0 |
0 |
1 |
1 |
1 | ||||||||||||
(-) |
1 |
0 |
0 |
1 | ||||||||||||
1 |
1 |
0 |
0 |
1 | ||||||||||||
1 |
0 |
0 |
1 | |||||||||||||
(+) |
0 |
1 |
1 |
1 | ||||||||||||
1 |
0 |
0 |
0 |
0 |
0 | |||||||||||
СТОП | ||||||||||||||||
Счетчик тактов равняется (0), деление окончено и как было сказано выше, т. к. последний частичный остаток равен нулю, то мы сразу получили истинное значение частного Z = 1101 и корректировка не потребовалась. |
Случай №4 X < 0; Y < 0; Z > 0.
Необходимо разделить два знаковых числа:
Х = -21 - делимое;
Y = -7 - делитель;
Z = +3 - частное.
((-21) : (-7) = (+3)).
В этом случае знаки делимого и делителя совпадают, поэтому на втором шаге производится вычитание, из отрицательного делимого вычитается отрицательный делитель ( или производится сложение с положительной записью делителя).
Если последний частичный остаток равен (0), то необходима коррекция частного, т. е. после получения частного к последнему биту частного необходимо прибавить (1).
Алгоритм деления приведен в табл. 4.13.
Таблица 4.13 - Алгоритм деление целых двоичных знаковых чисел методом без восстановления остатка.
Регистр (В) Делимое X |
Регистр (С) Делитель Y |
Регистр (А) Частное Z |
Счетчик тактов (Сч. Т) | |||||||||||||
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
4 |
(-) |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 | ||||||
1 |
0 |
0 |
1 |
0 |
0 |
3 | ||||||||||
1 |
0 |
0 |
0 |
1 |
1 | |||||||||||
(+) |
1 |
0 |
0 |
1 | ||||||||||||
1 |
0 |
0 |
0 |
1 |
2 | |||||||||||
0 |
0 |
1 |
1 |
1 | ||||||||||||
(+) |
1 |
0 |
0 |
1 | ||||||||||||
1 |
1 |
0 |
0 |
1 | ||||||||||||
1 |
0 |
0 |
1 | |||||||||||||
(-) |
0 |
1 |
1 |
1 | ||||||||||||
1 |
0 |
0 |
0 |
0 |
0 | |||||||||||
СТОП | ||||||||||||||||
Счетчик тактов равняется (0), деление окончено в частном мы получили псевдо частное (Z' = 0010) и как было сказано выше, если последний частичный остаток равен (0), то необходима коррекция частного, т. е. после получения частного к последнему биту частного необходимо прибавить (1) для получения истинного частного (Z), необходимо выполнить коррекцию, т. е. к (Z' +1) и тогда получаем истинное значение частного: Z = 0011. |
Похожие статьи
-
Деление двоичных беззнаковых чисел в компьютерных системах - Компьютерная арифметика
Деление мантисс чисел в форме с фиксированной запятой выполняется над абсолютными величинами операндов, представленными, чаще всего, прямым кодом....
-
Умножение двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика
При выполнении операции умножения знаковых чисел исходные сомножители могут быть представлены в ПК, ОК или ДК: . (4.35) При данном способе умножения...
-
Умножение двоичных беззнаковых чисел в компьютерных системах - Компьютерная арифметика
Пусть сомножителями X и Y являются s-битные целые числа без знака: Где - (Х) - множимое, (Y) - множитель, (Z) - произведение. Тогда: Z = X - Y. (4.2)...
-
При сложении и вычитании знаковых двоичных чисел операция вычитания заменяется операцией сложения в дополнительном коде. Докажем, что результат...
-
Операции сдвига в компьютерных системах - Компьютерная арифметика
Является одной из самых распространенных в компьютерной арифметике. В частности, она используется при выполнении умножения или деления двоичных чисел....
-
Контроль переполнения в компьютерных системах - Компьютерная арифметика
Возможно только при сложении чисел с одинаковыми знаками, когда для представления результата недостаточно отведенного количество разрядов (требуется...
-
Он позволяет заменить операцию вычитания на операцию сложения, чем упрощает архитектуру компьютерной системы. Дополнительный код является дополнением...
-
Представление числовых данных в компьютерных системах - Компьютерная арифметика
Компьютерный арифметика счисление двоичный Система вещественных чисел, используемая в ручных расчетах, предполагается бесконечной и непрерывной, т. е....
-
Перевод чисел из одной позиционной системы счисления в другую - Компьютерная арифметика
Задача перевода чисел из одной позиционной системы счисления в другую является одной из главных в компьютерной арифметике. Ее можно сформулировать...
-
Операция сложения и вычитания, двоичных беззнаковых чисел в компьютерных системах Компьютерная система выполняет сложение и вычитание операндов по...
-
Классификация систем счисления - Компьютерная арифметика
В настоящее время различают Позиционные И Непозиционные системы счисления. Классификация систем счисления приведена на рис. 2.1. Рисунок 2.1 --...
-
Системы счисления - Компьютерная арифметика
Как было отмечено в первой главе Система счисления - совокупность приемов и правил для установления однозначного соответствия между любым числом и его...
-
ДД-код Константа16 ДД-код Константа16 1111 1111 FF 0000 0000 00 0011 0101 35 1111 0100 F4 0101 0111 57 1001 1010 9A 1000 1101 8D 0000 0111 07 1000 0000...
-
10 2 4 8 16 0 0 0 0 0 1 1 1 1 1 2 10 2 2 2 3 11 3 3 3 4 100 10 4 4 5 101 11 5 5 6 110 12 6 6 7 111 13 7 7 8 1000 20 10 8 9 1001 21 11 9 10 1010 22 12 A...
-
Арифметические операции в двоичной системе счисления Умножение в двоичной системе счисления = поразрядные сдвиги + суммирование Основные форматы хранения...
-
Системы счисления. Представление данных в ЭВМ - Основы программирования
В современном мире для записи числовой информации используют позиционные системы счисления, в которых числа записываются с помощью ограниченного...
-
Арифметические флажки - Компьютерная арифметика
Флажки являются признаками, представляющими общую характеристику результата выполнения операции. Наиболее широко применяются следующие флажки: - Флажок...
-
Базовые понятия и определения компьютерной арифметики - Компьютерная арифметика
Компьютерная арифметика - совокупность принципов и форм представления числовой информации, методов и алгоритмов выполнения арифметических операций и...
-
Основные термины теории баз данных - БД (База данных) - совокупность специальным образом организованных данных, хранимых в памяти вычислительной системы...
-
Программный интерфейс для базы данных я разрабатывал в объектно-ориентрованной среде Delphi, с помощью Embarcadero RAD Studio. Конструктор форм Delphi в...
-
Типы данных и команды SQL - Разработка информационной системы "Магазин компьютерных товаров"
Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для...
-
Операционная система Windows - Программное обеспечение информационных компьютерных систем
Само название Windows, на русском языке означает "Окна" и имеет в нашем языке синонимы Виндовс, Вундоуз и другие производные полученные после перевода....
-
Собственные числа и собственные векторы матрицы Предположим, что среди бесконечного множества одномерных пространств R1 найдутся такие, которые будут...
-
Рассмотрим замкнутую сеть массового обслуживания с разнотипными заявками, которая является вероятностной моделью обслуживания заявок в УП "Проектный...
-
Блок OVRDSEL принимает до четырех входов (от первичных блоков) и выбирает один с наибольшим или наименьшим значением. Графически это выглядит следующим...
-
При обслуживании пассажиров в кассах предварительной продажи билетов в качестве показателей, характеризующих систему обслуживания, используют максимально...
-
Компромиссная система, для удобства восприятия данных человеком и корректной работы компьютера, двоично-десятичная запись чисел. Принцип построения этой...
-
Назначение программы Назначение программной системы - реализация задач допускового проектирования. Компонент обеспечивает соответствующий функционал: -...
-
- Отправляясь в аэропорт, необходимо проверить наличие у себя билета, паспорта и визы, в случае необходимости. - Для детей необходимо иметь проездной...
-
Машинная арифметика с плавающей точкой - Представление и хранение информациии в ЭВМ
Число с плавающей точкой: X=±Mx-S±px Здесь: M - мантисса; S - порядок. 0.314 101 0.0314 102 Машинные числа. Машинными называются числа, допускающие...
-
Системы счисления - Основы информатики
1.1 Переведите число 154,23510 из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную системы счисления Решение: При переводе из...
-
Диагонализация матриц. - Матричный формализм в теории систем
Для матрицы A, имеющей n различных характеристических чисел, преобразование вида M-1AM приводит к диагональной матрице D, где M называется модальной...
-
Операционная система - Программное обеспечение информационных компьютерных систем
Операционная система - это комплекс взаимосвязанных системных программ, назначение которого - организовать взаимодействие пользователя с компьютером и...
-
Аппаратный и программный аспекты диагностики КС Диагностика неисправностей КС имеет два аспекта: аппаратный и программный. Аппаратный аспект...
-
Для поддержания компьютерной системы 1С:Библиотека в исправном состоянии необходимо осуществлять мероприятия в соответствии с типовой системой...
-
В вычислительной технике понятие безопасности является весьма широким. Оно подразумевает и надежность работы компьютера, и сохранность ценных данных, и...
-
Классификация компьютерных сетей - Теоретические основы информационных процессов и систем
Для классификации компьютерных сетей используются разные признаки, выбор которых заключается в том, чтобы выделить из существующего многообразия такие,...
-
Система IP-адресации. - Использование компьютерных сетей
Для организации всемирной сети нужна хорошая система адресации, которая будет использоваться для направления информации всем адресатам. Союз Internet...
-
Глобальная компьютерная сеть Интернет - Использование компьютерных сетей
Цель данной темы - дать основные представления о глобальной компьютерной сети Интернет. Теоретический материал: Введение. Виды подключения к сети...
-
Доставочные агенты., Адресация в системе электронной почты - Использование компьютерных сетей
Программы, которые принимают почту от транспортного агента и доставляют ее соответствующим пользователям. Почта может доставляться конкретному лицу, в...
Деление двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика