Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Полный текст учебника.docx
Скачиваний:
26
Добавлен:
17.04.2019
Размер:
10.83 Mб
Скачать

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

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

Выполнение арифметических операций над числами, представленными в дополнительных кодах

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

Х = –1101; Y = 1001. Результат сложения: 11,0011 + 00,1001 = 11,1100 (или –0100);

Х = 1101; Y = 1001. Результат сложения: 00,1101 + 00,1001 = 01,0110 (переполнение, после сдвига вправо получим 00,10110, или +10110);

Х = 1101; Y = –1001. Результат сложения: 00,1101 + 11,0111 = 100,0100 (или 00,0100);

Х = –1101; Y = –1001. Результат сложения: 11,0011 + 11,0111 = 10,1010 (переполнение, после сдвига вправо получим 11,01010, или –10110).

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

ПРИМЕЧАНИЕ

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

Примеры операции умножения:

Х = 00,111 · 00,101 = 00,100011

00,111

× 00,101

________________

00111

00000

00111

00000

00000

__________

00100011

Х = 00,111 · 11111,011 = 11,011101

00,111

× 11111,011

_________________

00111

00111

00000

00111

00111

00111

00111

00111

___________________________

0011011,010101 ® 11,011101

Х = 11111,001 · 00,101 = 11,011101

11111,001

× 00,101

11111001

00000000

11111001

00000000

00000000

001011,011101 ® 11,01101

Х = 11111,001 · 11111,011 = 00,100011

11111,001

× 11111,011

11111001

11111001

00000000

11111001

11111001

11111001

11111001

11111001

1111010000,100011 ® 00,100011