Операция сложения и вычитания двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика

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

Докажем, что результат выполнения операций сложения и вычитания над числами, представленными в ДК, являются ПК, ОК или ДК соответственно.

Для этого рассмотрим отдельно формирование числовой и знаковой частей суммы.

Тогда операцию сложения проанализируем над "псевдомодулями" слагаемых - дополнительными кодами, у которых отброшен знаковый разряд.

В этом случае граничное число (C) станет равным весу знакового разряда, который становится отсутствующим.

Представим операцию сложения в общем виде:

. (4.1)

Где Z - сумма;

X - первое слагаемое;

Y - второе слагаемое.

В зависимости от знаков слагаемых возможны следующие варианты:

1. , тогда:

.

Например: рассмотрим два случая а) и б).

Случай а): необходимо вычислить сумму двух чисел записанных в десятичной системе счисления (5+2=7), для этого необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде, для удобства возьмем длину разрядной сетки четыре бита. Формат суммы представлен на рис. 4.6, а вычисление суммы и значения флагов на рис.4.7.

0,

1

1

1

D3

D2

D1

D0

Рисунок 4.6 - Формат суммы

Случай а)

Десятичное

Число

Двоичное

Число

Значения

Флагов

5(10)

0,101(2)

FC=0

2(10)

0,010(2)

FS=0

7(10)

0,111(2)

FZ=0

FO=0

Рисунок 4.7 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

    - FC=0, потому, что нет перехода (1) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки. - FS=0, потому, что значение знакового бита D3=0. - FZ=0, потому, что сумма не равняется (0). - FO=0, потому, что результат правильный и переполнение разрядной сетки нет.

Случай б): необходимо сложить два числа записанных в десятичной системе счисления (7+7=14), для этого необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде, для удобства возьмем длину разрядной сетки четыре бита.

Формат суммы представлен на рис. 4.8, а вычисление суммы и значения флагов на рис.4.9.

1,

1

1

0

D3

D2

D1

D0

Рисунок 4.8 - Формат суммы

Случай б)

Десятичное

Число

Двоичное

Число

Значения

Флагов

7(10)

0,111(2)

FC=1

7(10)

0,111(2)

FS=1

14(10)

1,110(2)

FZ=0

FO=1

Рисунок 4.9 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

    - FC=1, потому, что есть перехода (1) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки. - FS=1, потому, что значение знакового бита D3=1, а это не правильно так как оба слагаемых положительные числа, значит и сумма должна быть положительной, а в данном случае сумма получается отрицательной так как знаковый бит равен (1). - FZ=0, потому, что сумма не равняется (0). - FO=1, потому, что результат не правильный и переполнение разрядной сетки есть. 2. и, тогда:

.

Например: необходимо сложить два числа записанных в десятичной системе счисления (5+(-2)=3), для этого необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде, для удобства возьмем длину разрядной сетки четыре бита.

Формат суммы представлен на рис. 4.10, а вычисление суммы и значения флагов на рис.4.11.

1

0,

0

1

1

D3

D2

D1

D0

Рисунок 4.10 - Формат суммы

Десятичное

Число

Двоичное

Число

Значения

Флагов

5(10)

0,101(2)

FC=0

(-2)(10)

1,110(2)

FS=0

(3)(10)

10,011(2)

FZ=0

FO=0

Рисунок 4.11 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

    - FC=0, потому, что есть перехода (1) из разряда D2 в знаковый разряд D3 и есть перехода из знакового разряда D3 за пределы разрядной сетки. - FS=0, потому, что значение знакового бита D3=0. - FZ=0, потому, что сумма не равняется (0). - FO=0, потому, что результат правильный и переполнение разрядной сетки нет. Единица, которая вышла за пределы разрядной сетки не учитывается. 3. и, тогда: , по сути, представляет собой дополнительный код отрицательной разности:

. так как

.

Например: необходимо сложить два числа записанных в десятичной системе счисления (2+(-5)=(-3)), для этого необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде, для удобства возьмем длину разрядной сетки четыре бита.

Формат суммы представлен на рис. 4.12, , а вычисление суммы и значения флагов на рис.4.13.

1

0,

0

1

1

D3

D2

D1

D0

Рисунок 4.12 - Формат суммы

Десятичное

Число

Двоичное

Число

Значения

Флагов

2(10)

0,010(2)

FC=0

(-5)(10)

1,011(2)

FS=1

(-3)(10)

1,101(2)

FZ=0

FO=0

Рисунок 4.13 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

    - FC=0, потому, что нет перехода (1) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки. - FS=1, потому, что значение знакового бита D3=1. - FZ=0, потому, что сумма не равняется (0). - FO=0, потому, что результат правильный и переполнение разрядной сетки нет. Число 1,101 и есть (-3). Для того, чтобы перейти к прямому коду необходимо все биты проинвертировать, а затем к младшему биту прибавить (1), рис.4.14:

1,101(2)

(-3)

0,010(2)

Инверсия

1(2)

+1

0,011(2)

(+3)

Рисунок 4.14 - Пример перехода от дополнительного кода числа к прямому коду

4. , тогда:

.

Например: рассмотрим два случая а) и б).

Случай а): необходимо сложить два числа записанных в десятичной системе счисления ((-5)+(-2)=(-7)), для этого необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде, для удобства возьмем длину разрядной сетки четыре бита. Формат суммы представлен на рис. 4.15, а вычисление суммы и значения флагов на рис.4.16.

1

1,

0

0

1

D3

D2

D1

D0

Рисунок 4.15 - Формат суммы

Случай а)

Десятичное число

Двоичное число

Значения флагов

(-5)(10)

1,011(2)

FC=0

(-2)(10)

1,110(2)

FS=1

(-7)(10)

11,001(2)

FZ=0

FO=0

Рисунок 4.16 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

    - FC=0, потому, что есть переход (1) из разряда D2 в знаковый разряд D3 и есть перехода из знакового разряда D3 за пределы разрядной сетки. - FS=1, потому, что значение знакового бита D3=1. - FZ=0, потому, что сумма не равняется (0). - FO=0, потому, что результат правильный и переполнение разрядной сетки нет. Единица, которая вышла за пределы разрядной сетки не учитывается.

Число 1,001 и есть (-7). Для того, чтобы перейти к прямому коду необходимо все биты проинвертировать, а затем к младшему биту прибавить (1), рис.4.17.

Случай б): Необходимо сложить два числа записанных в десятичной системе счисления ((-7)+(-7)=(-14)), для этого необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде, для удобства возьмем длину разрядной сетки четыре бита.

Формат суммы представлен на рис. 4.18, а вычисление суммы и значения флагов на рис.4.19.

1,001(2)

(-7)

0,110(2)

Инверсия

1(2)

+1

0,111(2)

(+7)

Рисунок 4.17 - Пример перехода от дополнительного кода числа к прямому коду

1

0,

0

1

0

D3

D2

D1

D0

Рисунок 4.18 - Формат суммы

Случай б)

Десятичное

Число

Двоичное

Число

Значения

Флагов

(-7)(10)

1,001(2)

FC=1

(-7)(10)

1,001(2)

FS=0

(-14)(10)

10,010(2)

FZ=0

FO=1

Рисунок 4.19 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

    - FC=1, потому, что нет перехода (1) из разряда D2 в знаковый разряд D3 и есть переход из знакового разряда D3 за пределы разрядной сетки. - FS=0, потому, что значение знакового бита D3=0, а это не правильно так как оба слагаемых отрицательные числа, значит и сумма должна быть отрицательные, а в данном случае сумма получается положительной так как знаковый бит равен (0). - FZ=0, потому, что сумма не равняется (0). - FO=1, потому, что результат не правильный и переполнение разрядной сетки есть. Единица, которая вышла за пределы разрядной сетки не учитывается.

Из вышесказанного на примере (4Х - разрядной) сетки можно сделать следующие выводы:

    - переполнение разрядной сетки возможно, когда оба операнда имеют одинаковые знаки; - есть переход (1) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки. - нет перехода (1) из разряда D2 в знаковый разряд D3 и есть переход из знакового разряда D3 за пределы разрядной сетки.

При возникновении ситуации переполнения, увеличивается количество бит в разрядной сетке и результат становится правильным.

Похожие статьи




Операция сложения и вычитания двоичных знаковых чисел в компьютерных системах - Компьютерная арифметика

Предыдущая | Следующая