Помощь в учёбе, очень быстро...
Работаем вместе до победы

Сложение и вычитание двоичных чисел с фиксированной точкой

РефератПомощь в написанииУзнать стоимостьмоей работы

При сложении положительного и отрицательного чисел, для которых модуль отрицательного меньше модуля положительного (случай 3, рис. 3.7, с), результат получается прямом коде. При сложении старших разрядов модулей чисел единица переносится в знаковый разряд. В итоге, от значения 10 в знаковый разряд записывается 0, а единица прибавляется к модулю результата. В итоге, 60 м 4- (—40м) дает… Читать ещё >

Сложение и вычитание двоичных чисел с фиксированной точкой (реферат, курсовая, диплом, контрольная)

Принцип сложения целых положительных m-разрядных двоичных чисел Сложение и вычитание двоичных чисел с фиксированной точкой.

состоит в суммировании отдельных разрядов по правилу:

Сложение и вычитание двоичных чисел с фиксированной точкой.

где с* перенос в г-й разряд из (г — 1)-го; а, 6, — г-е разряды слагаемых А, В; Si — сумма г-го разряда; q+i — перенос в (г 4- 1)-й разряд, г = 0,1,…, т — 1.

Разряды суммы формируются последовательно, начиная с младшего разряда. Для нулевого разряда (i = 0) перенос с0 отсутствует, поэтому выражение (3.1) примет ВИД О0 + Ь" = S0(Cl).

Рассмотрим выполнение операции сложения более подробно для чисел в обратном и дополнительном кодах.

Прежде всего, рассмотрим случай, когда происходит переполнение разрядной сетки. В этом случае результатное число не помещается в отведенные разряды. Подобная ситуация возникает в одном из двух случаев:

  • — числа А и В положительные, А — В ^ 2т
  • — числа А и В отрицательные, |Л| + В ^ 2т.

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

Сложение нулевых чисел (хотя бы одно число нулевое) интереса не вызывает. При сложении чисел А и В в обратных кодах рассмотрим следующие случаи (условие переполнения разрядной сетки не выполняется):

  • 1. А > 0 и В > 0. Сложение выполняется для всех разрядов, включая знаковый, по стандартным правилам для двоичных чисел.
  • 2. А > 0 и В < 0, В > А. Аналогично предыдущему случаю, но результат получается в обратном коде.
  • 3. А > 0 и В < 0, |В| < А. При сложении старших разрядов получается число 10, которое должно быть записано в знаковый разряд. Поступают следующим образом: в знаковый разряд заносится 0, а единица прибавляется к результату сложения модулей А и В. Результат получается в прямом коде.
  • 4. A < 0 и В < 0. При сложении старших разрядов получается число 11, которое должно быть записано в знаковый разряд. Поступают следующим образом: в знаковый разряд заносится 1, вторая единица прибавляется к результату сложения модулей Л и В. Результат получается в обратном коде.

Пример 3.6. Выполнить сложение чисел в обратных кодах в 8-разрядной сетке: а) 60ю 4- 80io; б) — 60ю 4- (—80ю); в) 60ю 4- 40ю; г) 40до 4- (—60ю); д) 60ю 4- (—40ю); е) — 60ю 4- (—40ю);

Решение. Представим числа в обратном коде (знаковый разряд выделен полужирным начертанием): -60Ю: 1100 ООП, -80ш: 1010 1111, 60Ш: ООП 1100, 80: 0101 0000, 40ю: 0010 1000, -40ш: 1101 0111.

При попытке выполнить сложения а) и б) происходит переполнение разрядной сетки: максимально возможное значение, но модулю не должно превышать 2 7 = 128. Другой способ определить ситуацию переполнения (без вычисления десятичных значений) — получение в знаковом разряде не ожидаемого значения. Так, при сложении б0ю+80ю в знаковом разряде получается 1, а при сложении — 60ю+(—80ю) ~ значение 0.

На рис. 3.7 приведено выполнение сложений в)-е).

Сложение чисел в обратном коде.

Рис. 3.7. Сложение чисел в обратном коде.

При сложении положительных чисел (случай 1, рис. 3.7, а) результат получается в прямом коде (напомним, что для положительных чисел прямой и обратный код совпадают). Имеем: 60ю 4- 40ю представляется как ОНО 0100 = 100 м;

При сложении положительного и отрицательного чисел, для которых модуль отрицательного больше модуля положительного (случай 2, рис. 3.7, б), результат получается в обратном коде, поэтому для получения десятичного числа результат следует проинвертировать (кроме знакового разряда). Проинвертировав представление 1110 1011, получим 1001 0100 = —20ю.

При сложении положительного и отрицательного чисел, для которых модуль отрицательного меньше модуля положительного (случай 3, рис. 3.7, с), результат получается прямом коде. При сложении старших разрядов модулей чисел единица переносится в знаковый разряд. В итоге, от значения 10 в знаковый разряд записывается 0, а единица прибавляется к модулю результата. В итоге, 60 м 4- (—40м) дает представление 0001 0100 = 20 м;

Наконец, при сложении двух отрицательных чисел (случай 4, рис. 3.7, г) от значения И, которое должно быть записано в знаковый разряд, одна единица прибавляется к модулю результата, а вторая идет в знаковый разряд. Результат получается в обратном коде, поэтому, выполнив обратное инвертирование, получим значение 1110 0100 = -100м- ?

Рассмотрим выполнение сложения в дополнительном коде. Здесь также возможны четыре случая (считаем, что переполнения разрядной сетки не произошло):

  • 1. А > 0 и В > 0. Выполнение аналогично сложению в обратном коде, так как прямой, обратный и дополнительный код для положительных чисел совпадают.
  • 2. А > 0 и В < 0, В > А. Аналогично предыдущему случаю, результат получается в дополнительном коде.
  • 3. А > 0 и В < 0, В < А. Результат получается в прямом коде, но прибавление единицы к модулю результата, как в случае обратных кодов, не выполняется — происходит отброс переноса.
  • 4. А < 0 и В < 0. Аналогично предыдущему случаю (выполняется отброс переноса), результат получается в дополнительном коде.

Пример 3.7. Выполнить операции сложения из примера 3.6 в дополнительном коде.

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

Выполнение сложений г) е) приведено на рис. 3.8.

Сложение чисел в дополнительном коде.

Рис. 3.8. Сложение чисел в дополнительном коде.

На рис. 3.8, а указано вычисление 40ю + (—60ю) (случай 2): результат получается в дополнительном коде. После перевода в прямой код имеем представление 40ю+(—60ю) как 1001 0100 = —20ю.

Операция 60ю + (—40ю), выполненная в дополнительных кодах, приведена на рис. 3.8, б. Выполняется отброс переноса в знаковом разряде, поэтому в знаковый разряд помещается значение 0.

Сложение —60ю + (—40ю) приведено на рис. 3.8, в. В этом случае выполняется отброс переноса и результат представлен в дополнительном коде. После перевода имеем верный ответ: — 60i0-I- (—40ю) представляется как 1110 0100, что соответствует значению -100. ?

Операция вычитания сводится к выполнению операции сложения. Переход между операциями осуществляется, но привычным правилам:

Сложение и вычитание двоичных чисел с фиксированной точкой.

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

Показать весь текст
Заполнить форму текущей работой