Реферат/курсовая – представление чисел в эвм.
I.Перевод
чисел из одной позиционной
системы счисления в
другую с использованием
промежуточных систем
счисления и изображение
чисел в форматах ЕС
и СМ ЭВМ.
Любое число
А в позиционной системе счисления
(СС) с основанием q можно записать
в виде:
A(q)
= anqn an-1qn-1
… a1q1 a0q0
a-1q-1 … a-mq-m =,
где
ak – цифра числа в данной СС;
qk – разрядный вес цифры ak;
n 1 – количество разрядов в
целой части числа;
m – количество разрядов в дробной
части числа.
Чтобы
перевести целое число в новую
СС, его необходимо последовательно
делить на основание новой СС
до тех пор, пока не получится частное,
у которого целая часть равна 0. Число
в новой СС записывают из остатков от последовательного
деления, причем последний остаток будет
старшей цифрой нового числа.
Чтобы
перевести правильную дробь из одной
позиционной СС в другую, надо её
последовательно умножать на новое
основание до тех пор пока в новой дроби
не будет получено нужного количества
цифр, определяемого заданной точностью.
Правильная дробь в новой СС записывается
из целых частей произведений, и старшей
цифрой новой дроби будет целая часть
первого произведения.
Формула
для определения количества цифр
в новой СС: ,
где
m1 – количество цифр исходной дроби
с основанием p;
m2 – количество цифр в новой дроби
с основанем q.
А=356,31
10сс – 8сс – 2сс
Перевод
целой части:
356 8
4 44 8
4 5 8
5 0
Перевод
дробной части:
Количество цифр
после перевода дроби из 10 СС в 8 СС:
= 3
0,31
8
2,48
8
3,84
8
6,72
Проверка:
2cc – 16сс – 10сс
0001 0110
0100 , 01001110002
= 164,4F16 = (1*256 6*16 4 4*16-1 15*16-2)10
=
1
6 4 4
15 0
= 356,3085…10
= 356,3110 (верный результат)
B=723,54
10сс – 16сс – 2сс
Перевод
целой части:
723 16
3 45 16
13 2 16
2 0
Перевод
дробной части:
Количество цифр
после перевода дроби из 10 СС в 16
СС:
= 3
0,54
16
8,64
16
10,24
16
3,84
Проверка:
2cc – 8сс – 10сс
001011010 011
, 100010 1000112
= 1323,42438 = (1*512 3*64 2*8 3 4* -1 2*8-2 4*8-3)10
=
1
3 2 3
4 2 4
3
= 723,539…10
= 723,5410 (верный результат)
Для
двоичных чисел с ФЗ используют 3
формата фиксированной длины: полуслово
– короткий с ФЗ (2 байта = 16 бит, 16 разрядов);
слово – длинный с ФЗ (4 байта = 32 бита, 32
разряда); двойное слово – для промежуточных
действий(8 байт = 64 бита, 64 разряда), чтобы
обеспечить высокую точность вычислений.
Двоичные операнды имеют вид целых чисел
в дополнительном коде, у которых крайний
левый разряд – знаковый. Это правило
справедливо как для ЕС ЭВМ, так и для ПЭВМ.
А =
356,31
А = 101100100,010011102 М=2-9
зн
B = -723,54
B = -1011010011,1000101000112 М=2-10
зн
Двоичные
числа с ПЗ изображаются по-разному
в ЕС ЭВМ и ПЭВМ. Общим в изображении
является лишь то, что порядки имеют смещения.
В ПЭВМ
для чисел с ПЗ используются два
формата: короткий и длинный.
Смещенный порядок занимает
восемь разрядов (смещение=128), крайний
левый разряд сетки отводится под
знак числа, остальные под мантиссу,
изображенную в 2СС (23 разряда в коротком
и 55 разрядов в длинном формате). Смещенный
порядок содержит информацию о положении
запятой в двоичной мантиссе числа. Для
повышения точности представления мантиссы
старший разряд ее, который в нормализованном
виде всегда равен «1», может не заноситься
в разрядную сетку, а просто подразумеваться.
В ЕС
ЭВМ для чисел с ПЗ имеются
три формата: короткий – слово, длинный
– двойное слово и расширенный
– учетверенное слово. Во всех
этих форматах смещенный порядок
занимает семь разрядов (смещение=64)
и размещается в старшем байте вместе
со знаковым разрядом числа. Остальные
разряды (24 для короткого формата) занимает
мантисса числа, изображаемая в 16 СС. Каждые
4 бита воспринимаются машиной как одна
16-ричная цифра, а в смещенном порядке
содержится информация о положении запятой
между 16-ричными, а не двоичными цифрами.
Мантисса чисел с ПЗ всегда изображается
в ПК и должна быть нормализована.
Сравнение
представления мантисс с двоичным
и шестнадцатеричным основанием
показывает существенное расширение диапазона
представления чисел в ЕСЭВМ.
А = -356,31
А = -000101100100,010011102
р = 6
а) 2сс мантисса
зн 8 разрядов
мантисса
1 1 0 0 0 1 0 0 1 1 0 1
1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0
б) 16сс мантисса
зн 7 разрядов
мантисса
1 1 0 0 0 0 1 1 0 0 0 1
0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0
B =
723,54
B = 001011010011,1000101000112
р = 9
а) 2сс мантисса
зн
8 разрядов
мантисса
0 1 0 0 0 1 0 1 0
1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0
б) 16сс мантисса
зн
7 разрядов
мантисса
0 1 0 0 0 0 1 1 0
0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1
Отрицательные
числа в ЦВМ представлены в
специальных кодах: прямом, обратном и
дополнительном.
Прямой
код (ПК) представляет абсолютное
значение числа с закодированным знаком:
« » – «0», « – » – «1».
Обратный
код (OK) положительного числа совпадает
с его прямым кодом. Для отрицательного
числа в знаковый разряд заносится «1»,
а в остальных разрядах цифры заменяются
на взаимообратные (0 на 1, 1 на 0), т.е. формируется
поразрядное дополнение числа до единицы.
Дополнительный
код (ДК) положительного числа совпадает
с его прямым кодом. Для отрицательного
числа в знаковый разряд заносится «1»,
а в цифровой части числа цифры заменяются
на взаимообратные и к полученному инверсному
изображению прибавляется, единица в младший
разряд, т.е. код является дополнением
до основания СС.
Таким
образом, положительные числа во
всех кодах одинаковы, а отрицательные
– различны.
При
алгебраическом сложении чисел в
ОК со знаковым разрядом оперируют
как с разрядом цифровой части
числа, а при возникновении единицы
переноса из знакового разряда ее прибавляют
к младшему разряду числа.
А =-356,3110 =
-101100100,01001112
B = 723,5410 =
1011010011,1000101000112
Апк
= 1, 010110010001001110002
Впк
= 0, 10110100111000101000112
Аок = 1, 101001101110110001112
Вок = 0, 10110100111000101000112
М = 210
Сложение:
1, 10100110111011000111
0,
1011010011100010100011
10,
010110111001110110010
1
0, 010110111001110110011
0, 010110111001110110011ок
= 10110111, 001110110011пк
10110111, 0011101100112
= 367,2310
Проверка:
(-356,31)
10 723,5410 = 367,2310
При алгебраическом
сложении чисел в ДК результат
получают также в ДК, а при возникновении
единицы переноса из знакового разряда
ее отбрасывают.
А=356,3110 =
101100100,01001112
B =-723,5410 = -1011010011,1000101000112
Апк = 0, 010110010001001110002
Bпк = 1, 10110100111000101000112
Адк = 0, 010110010001001110002
Вдк = 1, 01001011000111010111012
М = 210
Сложение:
0, 01011001000100111000
1,
0100101100011101011101
1, 101001000110001001101
1, 101001000110001001101дк
= 1,010110111001110110011пк
-10110111, 001110110011=-367,2310
Проверка:
356,3110 (-723,54)
10 = -367,2310
Модифицированные
обратный и дополнительный
коды (МОК и МДК) имеют для изображения
знака два соседних разряда: « » – «00»,
« – » – «11». Эти коды используются для
обнаружения ситуации ПРС – переполнения
разрядной сетки. ПРС возникает при сложении
чисел с ФЗ одинакового знака, когда результат
операции выходит за верхнюю границу диапазона
представления чисел, это приводит к потере
старших разрядов.
Формальным
признаком ПРС при использовании
МОК и МДК является появление
запрещенных комбинаций в знаковых
разрядах – «01» или «10».
Для
исправления результата можно либо
увеличить масштаб результата, сдвинув
его вправо на один разряд, а в
освободившийся старший знаковый разряд
поместить значение младшего знакового
разряда, либо увеличить масштабы исходных
операндов и выполнить арифметическую
операцию снова.
А=-356,3110 = -101100100,01001112
B =-723,5410 = -1011010011,1000101000112
Апк = 1, 010110010001001112
Bпк = 1, 10110100111000101000112
Амдк = 11, 1010011011101100012
Вмдк = 11,01001011000111010111012
М = 210
Сложение:
11,101001101110110001000
11,0100101100011101011101
1 10,1110010001001101101
10 – запрещенная
комбинация. Увеличиваем масштаб результата,
сдвинув его вправо на один разряд, а в
освободившийся старший знаковый разряд
помещаем значение младшего знакового
разряда:
1, 01110010001001101101дк
= -10001101110110010011пк
-1000110111,1101100100112
= -1079,84810
Проверка:
-356,3110 (-723,54)10
= -1079,8510
Сложение
чисел в форме
с ПЗ выполняется в несколько этапов.
Числа с ПЗ изображаются двумя частями:
мантиссой и порядком.
Чтобы
их сложить, надо выполнить различные
действия над мантиссами и порядками.
Поэтому в машинах предусмотрены различные
устройства для обработки мантисс и порядков.
Мантиссы исходных операндов нормализованы.
- Выравнивание
порядков слагаемых: меньший порядок увеличивается
до большего, при этом мантисса меньшего
преобразуемого числа денормализуется.
В машине выполняется вычитание порядков
операндов. Знак и модуль разности порядков
определяет, мантиссу какого из слагаемых
надо сдвигать вправо и на сколько разрядов.
Сложение
мантисс операндов по правилам сложения
чисел с ФЗ.
Нормализация
результата, если необходимо. При этом
денормализация вправо,
т.е. ситуация, когда в старшем разряде
двоичной мантиссы «0», требует сдвига
мантиссы влево и уменьшения порядка на
соответствующее количество единиц.
Денормализация влево означает временное
ПРС мантиссы суммы, но в отличие от чисел
с ФЗ, здесь возможна коррекция: сдвиг
мантиссы на один разряд вправо и увеличение
на «1» порядка суммы.
При
больших величинах порядков возможно
возникновении истинного ПРС числа
с ПЗ, хотя вероятность этого невелика.
Смещенные
порядки используются в большинстве
современных ЭВМ для упрощения процесса
выравнивания порядков и их сравнения.
При
этом для представления порядка
применяется специальный дополнительный
код с инверсным кодированием знака: «
» – «1», « – » – «0». В результате порядки
чисел увеличиваются (в ЕС ЭВМ на 26=64,
в СМ ЭВМ на 27=128), что приводит к смещению
всех порядков по числовой оси в положительном
направлении. Такие смещенные порядки
называют характеристиками, и так как
они все оказываются целыми положительными
числами, то алгебраическое сложение можно
производить без предварительного анализа
знаков.
А=356,31
= 101100100,01001112
B =723,54 = 1011010011,1000101000112
А
В
Сложение:
1) Выравниваем порядки, для
чего выполняем их вычитание
с использованием ДК
РА
= 0,1001
(Рв )дк
= 1,0110
1,111
(РА– РВ)дк=1,111
(РА– РВ)пк=1,0001
РА– РВ
= -1, значит денормализуем А – сдвигаем
мантиссу на один разряд вправо и увеличиваем
порядок А на 1.
А
2) Складываем
мантиссы
0, 01011001000100111000
0, 1011010011100010100011
1, 0001101110110010011
ПРС!
Сдвиг мантиссы на один
разряд вправо и увеличение
порядка суммы на 1.
0, 10001101110110010011
А В
Проверка:
1000110111, 1101100100112
= 1079,84710
356,31 723,54 = 1079,85
III.Умножение
двоичных чисел.
Процесс
умножения чисел в двоичной системе
счисления прост, так как разрядами
множителя могут быть либо «0», либо
«1», и, следовательно, частичным произведением
в каждом такте цикла умножения будет
либо «0», либо множимое. Поэтому в цикле
умножения двоичных чисел три элементарных
операции:
- анализ цифры
очередного разряда множителя;
суммирование
множимого с накопленной суммой частичных
произведений, если цифра
множителя «1»;
сдвиги в
каждом такте умножения.
Умножение
можно выполнять как с младших,
так и со старших разрядов множителя,
со сдвигом, как частичной суммы,
так и множимого в процессе
умножения. Этим объясняется существование
четырех способов умножения чисел.
Следует
обратить внимание на то, что множитель
сдвигается во всех способах умножения,
так как в каждом такте анализируется
очередной разряд: при умножении
с младших разрядов сдвиг вправо
(в сторону младших разрядов), при умножении
со старших разрядов множитель сдвигается
влево. И еще одна особенность, позволяющая
легко запомнить способы умножения: сумма
частичных произведений обычно сдвигается
в ту же сторону, что и множитель, а множимое
сдвигается навстречу множителю, т.е. в
противоположную сторону.
I
способ – умножение с младших разрядов
множителя со сдвигом суммы частичных
произведений вправо.
Устройства,
которые хранят операнды, регистры,
имеют следующую разрядность:
- регистры
множителя и множимого – n-разрядные;
регистр частичных
произведений – 2n-разрядный.
Суммирование
множимого следует выполнять
в старшие n разряды регистра суммы
частичных произведений. Причем разрядность
его можно уменьшить вдвое, до
n разрядов, помещая при сдвиге младшие
разряды суммы на место освобождающихся
разрядов регистра множителя.
Особенность
I способа умножения состоит в
том, что имеется возможность
временного переполнения разрядной
сетки (ПРС) в регистре суммы частичных
произведений, которое ликвидируется
при очередном сдвиге вправо.
Алгоритм
умножения двоичных
чисел в прямом
коде:
- определить
знак произведения путем сложения по модулю
два знаковых разрядов сомножителей;
перемножить
модули сомножителей одним из четырех
способов;
присвоить
полученному произведению знак из п.1.
данного алгоритма.
C =
2310
D =
-5710
С = 101112
D = -1110012
С
пк = 0,010111 М = 26
D
пк = 1,111001
D = 0,111001 – модуль
множимого
Знак
произведения: 0 1 = 1
| Множитель n | Сумма ЧП 2n | Примечания |
| ,010111 | 0,000 000 | |
| 0,111001 0,111001 000 | Сложение Сдвиг | |
| ,001011 | 0,011100 1000 0,111001 1,010101 1000 | Сложение Сдвиг |
| ,000101 | 0,101010 11000 0,111001 1,100011 11000 | Сложение Сдвиг |
| ,00010 | 0,110001 111000 0,011000 11100 | Сдвиг Сдвиг |
| ,0001 | 0,111001 1,010001 11100 | Сложение Сдвиг |
| ,0000 | 0,101000 1110 0,010100 0111 | Сдвиг |
Масштаб произведения:
М = 212
Ответ:
1, 010100 0111пк
= -101 000 111 12 = 131110
Проверка:
2310 * (-57)10
= 131110
II
способ – умножение с младших разрядов
множителя со сдвигом множимого влево.
Устройства,
которые хранят операнды, регистры,
имеют следующую разрядность:
- регистр множителя
– n-разрядный;
регистры
множимого и суммы частичных произведений
– 2n-разрядный.
Первоначально
множимое помещается в младшие разряды
регистра, а затем в каждом такте
сдвигается на один разряд влево.
Умножение
чисел в дополнительном
коде с автоматической
коррекцией
Этот
алгоритм разработан Бутом и является
универсальным для умножения чисел в ДК.
Сомножители участвуют в операции со знаковыми
разрядами, которые рассматриваются как
цифровые разряды числа. Результат получается
сразу в дополнительном коде со знаком.
В процессе
умножения анализируются две
смежные цифры множителя: та, на которую
выполняется умножение в данном такте
– m1, и соседняя младшая цифра –
m2. В двоичном множителе этой паре
соответствуют четыре возможных набора
– «00», «01», «10», «11», каждый из которых
требует выполнения следующих действий:
- набор «01»
требует сложения множимого с предыдущей
суммой частичных произведений;
набор «10»
требует вычитания множимого из предыдущей
суммы частичных произведений;
наборы «00»
и «11» не требуют ни
сложения, ни вычитания, так как частичное
произведение равно нулю.
В цикле
умножения в каждом такте выполняются
соответствующие сдвиги на один разряд.
При этом могут использоваться все
четыре способа умножения с некоторыми
особенностями:
- в I способе
не следует выполнять последний сдвиг
суммы частичных произведений;
в IV способе
не выполняется первый сдвиг множимого.
Это
объясняется тем, что в этих тактах
реализуется умножение не на цифровой,
а на знаковый разряд числа.
Кроме
того, при выполнении алгоритма умножения
с автоматической коррекцией следует
помнить о правилах
сдвига отрицательных
чисел в ДК: при сдвиге влево освобождающиеся
младшие разряды заполняются нулями, при
сдвиге вправо освобождающиеся старшие
разряды заполняются единицами, т.е. реализуется
арифметический сдвиг числа.
C
= -2310 = -101112
D
= 5710 = 1110012
C
пк = 1,010111
D
пк = 0,111001
С
дк = 1,101001 М = 26
D
дк = 0,111001 – множитель
| Множитель | Множимое | Сумма ЧП | Примечания |
| 0,1110010 0,0111001 | 1,111 101001 1,111 010010 | 0,000 000 0,000 010111 0,000 010111 | Вычитание Сдвиги |
0,0011100 | 1,1110 | 0,000 010111 1,111 010010 1,111 101001 | Сложение Сдвиги Сдвиги |
| 1,111 101001 0,00010 111000 | Вычитание | ||
| 0,000111 | 1,111010 01000 | 0,00010 10001 | Сдвиги |
| 0,00011 0,00001 | 1,110100 1000 1,101001 000 | Сдвиги Сдвиги | |
0,000 | 1,010010 | 0,00010 10001 1,101001 000 1,101011 10001 | Сложение Сдвиги |
Ответ:
С*Dдк
= -101011 100012
С*Dпк
=-010100 01112
Проверка:
(-23)10*5710=(-1311)10
III
способ – умножение со старших разрядов
множителя со сдвигом суммы частичных
произведений влево.
Устройства,
которые хранят операнды, регистры,
имеют следующую разрядность:
- регистры
множителя и множимого – n-разрядные;
регистр частичных
произведений – 2n-разрядный.
Суммирование
множимого следует выполнять
в младшие n разрядов регистра суммы
частичных произведений.
Особенность
III способа умножения состоит в том, что
в последнем такте не
следует выполнять сдвиг в регистре
сумм частичных произведений.
Алгоритм
умножения двоичных
чисел в ДК с
простой коррекцией:
1. определить
знак произведения путем сложения по модулю
два знаковых разрядов сомножителей.
2. перемножить
модули сомножителей, представленных
в ДК, одним из четырех способов – получить
псевдопроизведение
3. если
хотя бы один из сомножителей отрицателен,
выполнить коррекцию по следующим правилам:
4. Присвоить
модулю произведения знак из п.1 данного
алгоритма.
C = -2310 = -101112
D = -5710 = -1110012
C
пк = 1,010111
D
пк = 1,111001 М = 26
С
дк = 1,101001
D
дк = 1,000111
С дк = 0,101001 – модуль множимого
D дк = 0,000111 – модуль множителя
Знак
произведения: 1 1 = 0
| Множитель n | Сумма ЧП 2n | Примечания |
| ,000111 ,001110 ,011100 ,111000 | ,000 000 ,000 000 ,000 000 ,000 101001 ,000 101001 | Сдвиг Сдвиг Сдвиг Сложение Сдвиг |
| ,11000 | ,0001 010010 ,000 101001 ,0001 111011 | Сложение Сдвиг |
| ,1000 | ,00011 110110 ,000 101001 ,000100 0111 | Сложение |
Псевдопроизведение
= 0, 000100 0111
Коррекция
(складываем модули операндов):
0, 000100 0111
0, 010111
0, 011011 0111
0,
111001
1, 010100 0111
Ответ:
(C*D)пк
=1010001112 = 131110
Проверка:
(-23)10*(-57)10
= 131110
IV
способ – умножение со старших разрядов
множителя со сдвигом множимого вправо.
Устройства,
которые хранят операнды, регистры,
имеют следующую разрядность:
- регистр множителя
– n-разрядный;
регистры
множимого и частичных произведений –
2n-разрядный.
Первоначально
множимое помещается в старшие разряды
регистра, а затем в каждом такте
сдвигается на один разряд вправо.
Особенность
IV способа умножения состоит в том,
что перед началом цикла умножения следует
множимое сдвинуть на один разряд вправо.
Умножение
чисел в форме
с плавающей запятой
Когда
сомножители заданы в форме с
ПЗ, то их произведение определяется следующим
образом:
Т.е.
мантисса произведения mс равна
произведению мантисс сомножителей, а
порядок рс – сумме порядков сомножителей.
Это
позволяет сформулировать алгоритм
умножения чисел в форме
с ПЗ:
1. определить
знак произведения путем сложения по модулю
два знаковых разрядов сомножителей;
2. перемножить
модули мантисс сомножителей по правилам
умножения дробных чисел с ФЗ;
3. определить
порядок произведения алгебраическим
сложением порядков сомножителей с использованием
модифицированного дополнительного или
обратного кодов;
4. нормализовать
мантиссу результата и выполнить округление,
если это необходимо.
Примечания:
1. Так
как мантиссы исходных сомножителей
нормализованы, то денормализация
мантиссы произведения возможна
только на один разряд.
2. При
умножении чисел с ПЗ возможно
возникновении ПРС при сложении порядков,
поэтому необходимо предусматривать выявление
признаков ПРС в устройствах умножения
чисел с ПЗ.
C = -2310 = 101112
D = -5710 = 1110012
С
зн мантисса
порядок
0 1 0 1 1 1 0 0
00101
D
зн мантисса
порядок
0 1 1 1 0 0 1 0 00110
Знак
произведения: 0 0 = 0
| Множитель n | Множимое 2n | Сумма ЧП 2n | Примечания |
| 0,101110 0,011100 | 0,011100 1000 0,001110 01000 | 0,000 000 0,011100 1000 0,011100 1000 | Сложение Сдвиги |
| 0,111000 | 0,000111 001000 | Сдвиги | |
| 0,011100 1000 0,000111 001000 0,100011 101000 | Сложение | ||
| 0,11000 | 0,00011 100100 | Сдвиги | |
0,1000 | 0,0001 | 0,100011 101000 0,00011 100100 0,100111 001100 | Сложение Сдвиги |
| 0,100111 001100 0,0001 110010 0,101000 1110 | Сложение | ||
| 0,0000 | 0,000 111001 | Сдвиги |
Порядок
произведения:
00,0110
00,0101
00,1011 = 1110
Выполняем
нормализацию :
0,101000 1110 (М=212)
= 0,0101000111 (М=212)
зн мантисса
порядок
0
101000111 1011
Ответ:
(C*D)пк
=1010001112 = 131110
Проверка:
2310*5710
= 131110
IV.
Деление двоичных чисел
Процесс
деления состоит из последовательности
операций вычитания и сдвигов, при
этом операция вычитания заменяется
операцией сложения остатка с
делителем, представленным в обратном
или дополнительном кодах.
При
делении чисел в прямом коде знак
частного определяется сложением по модулю
два знаковых разрядов делимого и делителя,
и далее в процессе деления участвуют
модули операндов.
Так
как операция деления обратна
умножению и начинается всегда со
старших разрядов, то существуют два
способа деления – обращенный III и IV способы
умножения. Причем нередко для реализации
умножения и деления целесообразно использовать
одно и то же оборудование: регистр множимого
– как регистр делителя, регистр множителя
– как регистр частного, а регистр частных
сумм – как регистр делимого, в который
заносят остатки от деления.
Алгоритм
деления с восстановлением
остатков:
- Определить
знак частного сложением по модулю 2 знаковых
разрядов делимого и делителя. Далее использовать
модули операндов.
Вычесть из
делимого делитель, путем сложения в ОК
или ДК.
Проанализировать
знак остатка после первого вычитания:
- Выполнить
сдвиги: частного на один разряд влево
и остатка на один разряд влево (I способ)
или делителя на один разряд вправо (II
способ).
В цикле формирования
цифр частного вычитать из остатка делитель,
прибавляя его в ОК или ДК.
Проанализировать
знак полученного остатка:
а) если > 0, то в частное заносится «1»;
б) если <0, то в частное заносится «0».
- Восстановить
отрицательный остаток, сложив его с делителем.
Выполнить
сдвиги, как указано в п.4.
Завершить
цикл формированием (n 1)-го остатка для
округления частного.
Выполнить
округление результата и присвоить частному
знак из п.1.
C = 2310
= 101112
D = -5710 = -1110012
Спк = 0,010111-
делимое М = 26
Dпк = 1,111001
Dок = 1,000110
– делитель
| Частное | Делимое (Остатки) | Примечания |
| 0,0000 | 0,010111 1,000110 1,011101 0,111001 10,010110 1 0,010111 | Вычитание Остаток, < 0 Восст. Остатка Сдвиги |
0,00000 | 0,101110 1,000110 1,110100 0,111001 10,101101 1 0,101110 | Вычитание Остаток, < 0 Восст. Остатка Сдвиги |
0,000001 | 1,011100 1,000110 10,100010 1 0,100011 1,000110 | Вычитание Остаток > 0 |
0,000011 0,000110 0,001100 0,011001 | 1,000110 1,000110 10,001100 1 0,001101 0,011010 0,011010 1,000110 1,1000 0,111001 10,011001 1 0,011010 0,110100 1,000110 1,111010 0,111001 10,110011 1 0,110100 1,101000 1,101000 1,000110 10,10111 1 0,11000 1,1000 1,1000 1,000110 10,100110 1 0,100111 | Вычитание Остаток > 0 Сдвиги Сдвиги Остаток < 0 Сдвиги Остаток > 0 Остаток > 0 |
Алгоритм
деления без восстановления
остатков:
- Определить
знак частного путем сложения по модулю
два знаковых разрядов делителя и делимого.
Далее использовать модули операндов.
Вычесть из
делимого делитель путем сложения в ДК
или ОК.
Проанализировать
знак остатка после первого вычитания:
а) если
положителен, то произошло ПРС, операцию
следует прекратить для смены
масштаба операндов;
б) если
остаток отрицателен, то в частное
занести «0» и продолжить операцию
деления.
- Выполнить
сдвиги частного на один разряд влево
и остатка на один разряд влево (I способ)
или делителя на один разряд вправо (II
способ).
Если до сдвига
остаток был положителен, то вычесть из
остатка делитель, если был отрицателен
– прибавить к остатку делитель.
Если вновь
полученный остаток положителен, то в
очередной разряд частного занести «1»,
в противном случае – «0».
Выполнить
пп.4-6 алгоритма (n 1) раз, причем последний
сдвиг частного не выполнять, т.к. (n 1)-ый
разряд формируется для округления.
Выполнить
округление результата и присвоить частному
знак из п.1.
C = -2310 = -10111
2 – делимое
D = -5710 = -111001
2 – делитель
Спк = 1,010111
Dпк = 1,111001
Сдк = 1,101001 М
= 26
Dдк = 1,000111
1 1 = 0
| Частное (Влево) | Делитель (Вправо) | Делимое (остатки) | Примечания |
| 0,0000 0,00000 0,000001 0,000011 0,000110 0,001100 0,011001 0,011001 (1) | 0,111001 000 0,011100 1000 0,001110 01000 0,000111 001000 0,00011 100100 0,0001 110010 0,000 111001 0,000 011100 | 0,010111 000 1,000111 000 | Вычитание Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток > 0 Сдвиги Вычитание Остаток < 0 Сдвиги Сложение Остаток < 0 Сдвиги Сложение Остаток > 0 Сдвиги Вычитание Остаток < 0 |
1,01110 000 0,011100 1000 | |||
1,111010 1000 0,001110 01000 | |||
| 10,001000 11000 0,001000 11000 1,111000 111000 | |||
| 10,0001 101000 0,0001 101000 1,11100 011100 | |||
1,1110 000100 0,0001 110010 | |||
1,111 110110 0,000 111001 10,000 10111 0,000 10111 | |||
| 1,111 100100 10,000 010011 0,000 010011 |
Алгоритм
деления в дополнительном
коде (с автоматической
коррекцией).
Операнды
участвуют в операции деления
со знаковыми разрядами. Знак частного
определяется в процессе деления.
- Если знаки
делимого и делителя совпадают, то в частное
заносится «0», в противном случае – «1».
Этот разряд знаковый.
Если знаки
операндов совпадают, то делитель вычитается
из делимого, в противном случае делитель
прибавляется к делимому.
Если знак
первого остатка совпадает со знаком делимого,
то произошло ПРС. Операцию деления прекратить.
В противном случае деление продолжить.
Выполнить
сдвиги частного и остатка на один разряд
влево (I способ) или делителя на один разряд
вправо (II способ).
Все последующие
остатки формируются по правилу: если
знаки делителя и остатка до сдвига совпадали,
то делитель вычесть из остатка, в противном
случае – делитель прибавить к остатку.
Если знаки
нового остатка и делителя совпадают,
то в очередной разряд частного
занести «1», в противном случае – «0».
Выполнить
пп.4-6 (n 1) раз, причем последний сдвиг частного
не выполнять.
Выполнить
округление результата.
C = -2310 = -101112
– делитель
D = 5710 =
1110012 – делимое
Спк = 1,010111
Dпк = 0,111001
Сдк = 1,101001 М
= 26
Dдк = 0,000111
1 0 = 1
| Частное (Влево) | Делитель (Вправо) | Делимое (остатки) | Комментарий | |
| 0,0001 | 1,101001 000 | 0,111001 000 1,101001 000 | Срав. Знаков Сложение ПРС! | |
| 10,100010 000 | ||||
| Увеличиваем порядок делимого до 7 | ||||
| 0,0001 | 1,101001 000 | 0,011100 1000 1,101001 000 10,000101 1000 | Срав. Знаков Сложение ПРС! | |
| Увеличиваем порядок делимого до 8 | ||||
| 0,0001 0,00010 0,000101 0,001011 0,010110 0,101100 1,011000 1,011000 (0) | 1,101001 000 1,110100 1000 1,111010 01000 1,11101 001000 1,1110 100100 1,111 010010 1,111 101001 1,111 110100 | 0,001110 01000 1,101001 000 | Срав. Знаков Сложение Сдвиги Сдвиги Сдвиги Сдвиги Сдвиги Сдвиги Сдвиги | |
1,110111 01000 0,001011 1000 | ||||
| 10,00010 11000 1,111010 01000 | ||||
1,11101 000 0,00010 111000 | ||||
1,111 111000 0,0001 011100 | ||||
| 10,0001 010100 1,111 010010 | ||||
| 10,000 100110 1,111 101001 | ||||
| 10,000 00111 1,111 110100 | ||||
| 10,000 00011 | ||||
(D/C)пк
= 1,101000
Порядок
частного:
0,0111
1,1011
10,0010=0,0010 = 210
D/C = 10,10002 =
2,5 M = 22
Деление
чисел в форме
с плавающей запятой
Когда
операнды заданы в форме с ПЗ, то их частное
определяется следующим образом:
Т.е.
мантисса частного mС есть частное
мантисс делимого и делителя, а порядок
рС – сумма порядков операндов.
Это
позволяет сформулировать алгоритм
деления чисел в форме с ПЗ:
- Определить
знак частного путем сложения по модулю
два знаковых разрядов операндов.
Разделить
модуль мантиссы делимого на модуль мантиссы
делителя по правилам деления дробных
чисел с ФЗ.
Определить
порядок частного вычитанием порядка
делителя из порядка делимого, используя
ОК или ДК.
Нормализовать
мантиссу результата и присвоить знак
из п.1.
В
отличие от деления чисел с
ФЗ при выполнении п.2 алгоритма, получение
положительного остатка при первом
вычитании не означает ПРС. При обработке
чисел с ПЗ такая ситуация требует денормализации
мантиссы делимого сдвигом её на 1 разряд
вправо с одновременным увеличением порядка
делимого на «1».
Однако
ситуация ПРС при делении чисел
с ПЗ возможна при вычитании порядков
операндов, если они были разных знаков.
C = 2310 = 101112
– делитель
D = 5710 =
1110012 – делимое
Операнды
в разрядной сетке
условной машины
C = 2310 = 1011102
D = 5710 = 1110012
– делимое
Cпк= 0,0101112
М = 26
Cдк
= 1,101001
0 0 = 0
| Частное | Делимое (остатки) | Комментарии |
| 0,000 | 0,111001 1,101001 10,10001 | Вычитание ПРС! |
| Увеличиваем порядок делимого до 7 | ||
| 0, 000 | 0,011100 1,101001 10,000101 | Вычитание ПРС! |
| Увеличиваем порядок делимого до 8 | ||
0,0000 0,00001 0,000010 0,000101 0,001010 0,010100 0,101000 0,101000(1) | 0,001110 1,101001 1,110111 1,101110 | Вычитание Остаток < 0 Сдвиги Сложение Остаток > 0 Вычитание Сложение Остаток > 0 Вычитание Сложение Сложение Остаток >0 |
0,010111 10,000101 1 0,000110 0,001100 | ||
| 0,001100 1,101001 1,110101 1,101010 | ||
| 1,101010 0,010111 10,0001 1 0,00010 0,000100 | ||
| 0,000100 1,101001 1,101101 1,011010 | ||
| 1,011010 0,010111 1,110001 1,100010 | ||
| 1,100010 0,010111 1,111001 1,110010 | ||
| 1,110010 0,010111 10,001001 1 0,001010 | ||
Порядок
частного
0,0111
1,1011
10,0010=0,0010 = 210
Округление
мантиссы:
0,101000
1
0,101001
D/C = 10,10012 =
2,5625
V.
Сложение двоично-десятичных
чиселКод
с естественными
весами 8-4-2-1.
Каждая
десятичная цифра в этом коде образуется
естественным замещением ее двоичным
эквивалентом.
Алгоритм сложения
в коде 8-4-2-1.
А=-356,31
А=-0,035631
B=-0,072354
М=104
Обратный
код:
Сложение чисел:
Коррекция:
Перевод
числа в ПК:
(A B)пк
= 1, 0001
000 0111 1001 1000 01018-2-4
С учетом
масштаба: (A B) = -1079,8510
Проверка:
A B =-356,3110– 723,5410=-1079,8510
Код
с избытком 3
ПК
получается прибавлением избытка 3 к
коду 8-4-2-1.
Алгоритм
сложения в коде с
избытком 3
А =
356,31
В = – 723,54
А/=
0,35631
М=103
В/= – 0,72354
А2-10
= 0,0110.1000.1001.0110.0100
В2-10
= 1,1010.0101.0110.1000.01 1
Вок =
1,0101.1010.1001.0111. 000
Сложение:
(А В)8-4-2-1 3
= 1, 0110.1001.1010.0101.01 0
Результат
с учетом масштаба
М=103
(А В)= – 367,2310
Проверка:
356,3110 (-723,54)10=
– 367,2310
Код 2-4-2-1
Алгоритм
сложения в коде 2-4-2-1.
1. Проверить
знаки слагаемых. Отрицательные преобразовать
в ОК, инвертируя тетрады.
2. Сложить
двоично-десятичные числа по правилам
двоичной арифметики.
3. Выполнить
коррекцию суммы:
если каждая из исходных тетрад меньше
5, то
–
коррекция не нужна ,если суммарная
тетрада также <5
–
если суммарная тетрада ?
5, то необходима коррекция кодом 6 (0110).
–
если одна из исходных тетрад <5, а другая
– ?5,
то коррекции не требуется.
–
если каждая из исходных тетрад ?5,
то
–
коррекция не нужна, если тетрада
суммы ?5
–
если тетрада суммы <5, то нужна
коррекция кодом –6 (1010)
ИЛИ!
1. Корректируется
тетрада суммы прибавлением кода 0110, если
содержится 0 в 4-м разряде тетрад обоих
слагаемых и комбинации 10 или 01 в 4-м
и 3-м разрядах тетрады суммы и есть единица
либо во 2-м, либо в 1-м разрядах тетрады
суммы.
2. Корректируется
тетрада суммы прибавлением кода 1010,
если содержится 1 в 4-м разряде обоих слагаемых
и комбинация 01 или 10 в 4-м и 3-м разрядах
тетрады суммы и есть 0 либо во 2-м, либо
в 1-м разрядах тетрады суммы.
! Единица переноса между тетрадами
не учитывается.
Проверить
знак результата. Если результат отрицателен,
преобразовать его в ПК, инвертировав
все тетрады.
А = – 356,31
В =
723,54
А/=
– 0,35631
М=103
В/=
0,72354
А2-4-2-1=
1,0011.1011.1100.0011.0001
Аок
= 1,1100.0100.0011.1100.1110
В2-4-2-1
= 0,1101.0010.0011.1011.0100
Сложение:
(А В)2-4-2-1 =
0, 0011.1100.1101.0010.00112-4-2-1
Результат
с учетом масштаба
М=103
(А В)=367,2310
Проверка:
-356,3110 723,5410=367,2310
А = – 356,31
В = – 723,54
А/=
– 0,035631
М=104
В/= – 0,072354
А3а 2= 1,00010.01011.10001.10100.01011.00101
Аок =
1,11101.10100.01110.0101 .10100.11010
В3а 2=
1,00010.10111.01000.01011.10001.01110
Вок
= 1,11101.01000.10111.10100.01110.10001
Сложение:
(А В)3а 2 = 1,
00101.00010.10111.11101.1 010.10001
Результат
с учетом масштаба
М=104
(А В)= – 1079,8510
Проверка:
-356,3110 (-723,54)
10= – 1079,8510
VI.
Умножение двоично-десятичных
чисел.
Алгоритм
умножения заключается в удвоении
на каждом шаге множимого, что равносильно
сдвигу его на один разряд влево, и
делению пополам множителя, что
равносильно сдвигу его на один разряд
вправо. Шаги повторяются, пока множитель
не станет равным нулю.
При
сдвиге двоично-десятичных чисел (код
8-4-2-1) на один разряд как влево так
и вправо необходима коррекция. При
сдвиге влево коррекция производится
точно так же, как и при сложении,
то есть при появлении неправильных
тетрад или единицы переноса из тетрады
осуществляется прибавление к данной
тетраде корректирующего кода 0110. При
сдвиге вправо корректирующий код образуется
как разница между математическим
результатом деления двоичной тетрады
пополам (16/2=8) и фактическим (10/2=5), 8-5=310=0011.
Эту разницу нужно вынести из тетрады,
в которой образовалась единица переноса.
Таким образом, корректирующий код будет
310=-00112=1101ДК.
А = 35610
В = 72310
А
= 0011.0101.01108-2-4-1 – множитель
В= 0111.0010.00118-2-4-1
– множимое
А*B = 0010.0101.0111.0011.1000.10008-2-4-1
= 257.38810
Проверка:
35610*72310
= 257 38810
Метод
основан на преобразовании множителя
в виде суммы произведений десятичных
чисел на степень двойки. Множитель
представляется в коде 8-4-2-1. Особенностью
преобразованного множителя является
то, что десятичное число состоит только
из символов 0 и 1, а слагаемых в нём не более
четырёх. Каждое из четырёх частичных
произведений получают последовательно
сдвигом множимого на требуемое количество
десятичных разрядов (тетрад) с подсуммированием
и коррекцией. Умножение же на степень
двойки равносильно сдвигу влево на
1 разряд с введением коррекции.
А2-10
= 0011.0101.01108-2-4-1 -множимое
В2-10
= 0111.0010.00118-2-4-1 – множитель
Преобразование
множителя:
B2-10 = 0111. 0010.00118-2-4-1 = (0*23
1*22 1*21
1*20)*102 (0*23
0*22 1*21
0*20)*101 (0*23
0*22 1*21
1*20)*100 = (000)*23 (100)*22 (111)*21
(101)*20
A2-10=0011.0101.01108-2-4-1
A*B=0010.0101.0111.0011.1 00.10008-2-4-1 =
257 38810
Проверка: A*B =35610*72310
= 257 38810
Список
используемой литературы
1.Фадеева Т.Р.,
Долженкова М.Л. Организация арифметических
операций над двоичными числами.
– Киров: Изд-во ВятГУ, 2001. – 40 с.
2. Конспекты
лекций по дисциплине «Информатика».






