1. Способы представления чисел в ЭВМ — Теория — 1.3 Представление чисел с фиксированной и плавающей точкой

1. Способы представления чисел в ЭВМ — Теория — 1.3 Представление чисел с фиксированной и плавающей точкой Реферат

Реферат/курсовая — представление чисел в эвм.

……………….36

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

Любое число
А в позиционной системе счисления
(СС) с основанием q можно записать
в виде:
A(q)
= anqn an-1qn-1
… a1q1 aq0
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


,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


,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 =
23
10
D =
-57
10

С = 101112
D = -1110012
С
пк
= 0,010111 М = 26
D
пк
= 1,111001

D = 0,111001 – модуль
множимого
Знак
произведения:
0 1 = 1

Множитель

n

Сумма ЧП

2n

Примечания
,0101110,000 000
0,111001
0,111001 000
Сложение
Сдвиг
,0010110,011100 1000
0,111001
1,010101 1000
Сложение
Сдвиг
,0001010,101010 11000
0,111001
1,100011 11000
Сложение
Сдвиг
,00010,110001 111000
0,011000 11100
Сдвиг
Сдвиг
,00010,111001
1,010001 11100
Сложение
Сдвиг
,0000,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
0,0001110

1,1110
100100
1,11101 001000

0,000 010111
1,111 010010
1,111 101001
Сложение
Сдвиги
Сдвиги
1,111 101001
0,00010 111000
Вычитание
0,0001111,111010 010000,00010 10001Сдвиги
0,00011
0,00001
1,110100 1000
1,101001 000
Сдвиги
Сдвиги

0,000

1,010010
000

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

Примечания
,00111
,01110
,11100
,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,11100
0,011100 1000
0,001110 01000
0,000 000
0,011100 1000
0,011100 1000
Сложение
Сдвиги
0,1110000,000111 001000Сдвиги
0,011100 1000
0,000111 001000
0,100011 101000
Сложение
0,110000,00011 100100Сдвиги

0,1000

0,0001
110010

0,100011 101000
0,00011
100100

0,100111 001100
Сложение

Сдвиги

0,100111 001100
0,0001 110010
0,101000 1110
Сложение
0,0000,000 111001Сдвиги

Порядок
произведения:

00,0110
00,0101
00,1011 = 1110
Выполняем
нормализацию :

0,101000 1110 (М=212)
= 0,0101000111 (М=212)

зн мантисса
порядок

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,000 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

,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

Алгоритм
деления без восстановления
остатков:

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

а) если
положителен, то произошло ПРС, операцию
следует прекратить для смены
масштаба операндов;
б) если
остаток отрицателен, то в частное
занести «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,000

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
,001000 11000
1,111000 111000
10,0001
101000

,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,00011,101001
000
0,111001 000
1,101001 000
Срав. Знаков
Сложение
ПРС!
10,100010
000
Увеличиваем
порядок делимого до 7
0,00011,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 ()

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
1,00010
11000
1,111010 01000

1
,11101 000
0,00010 111000

1
,111 111000
0,0001 011100
1,0001
010100
1,111 010010
1,000
100110
1,111 101001
1,000
00111
1,111 110100
1,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,000

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
Сдвиги

Сложение
Остаток < 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

,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

,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

Результат
с учетом масштаба
М=10
3
(А В)= — 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

Результат
с учетом масштаба
М=10
3
(А В)=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
Результат
с учетом масштаба
М=10
4
(А В)= — 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*2)*102 (0*23
0*22 1*21
0*2)*101 (0*23
0*22 1*21
1*2)*100 = (000)*23 (100)*22 (111)*21
(101)*2
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. Конспекты
лекций по дисциплине «Информатика».

Оцените статью
Реферат Зона
Добавить комментарий