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

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

Компьютерная система выполняет сложение и вычитание операндов по правилам сложения и вычитания двоичных беззнаковых чисел рис.4.1:

Правила сложения:

Правила вычитания:

1. 0 + 0 = 0

1. 0 - 0 = 0

2. 0 + 1 = 1

2. 1 - 1 = 0

3. 1 + 0 = 1

3. 1 - 0 = 1

4. 1 + 1 = 10

4. 10 - 1 = 1

Рисунок 4.1 - Правила сложения и вычитания, двоичных беззнаковых чисел

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

Например: необходимо перевести в двоичную систему счисления, а затем сложить два числа: 7(10) и 5(10) записанных в десятичной системе счисления ( по правилам сложения двоичных беззнаковых чисел ). Длина разрядной сетки операндов равна четырем битам.

Используя вышеописанные правила, мы находим сумму двух чисел следующим образом: сначала складываем числа в последнем столбце, записываем младший разряд полученной суммы под столбцом, а старший в следующий слева столбец, и продолжаем сложение, как показано на рис.4.2.

Например: необходимо перевести в двоичную систему счисления, а затем найти разность двух чисел: 9(10) и 7(10) записанных в десятичной системе счисления (по правилам вычитания двоичных беззнаковых чисел). Длина разрядной сетки операндов равна четырем битам рис.4.3.

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

Например: необходимо перевести в двоичную систему счисления, а затем найти сумму двух чисел: 9(10) и 7(10) записанных в десятичной системе счисления ( по правилам сложения двоичных беззнаковых чисел ). Длина разрядной сетки операндов равна четырем битам рис.4.4.

Десятичное

Число

Двоичное

Число

7(10)

0111(2)

5(10)

0101(2)

12(10)

1100(2)

Рисунок 4.2 - Пример вычисления суммы двух чисел: 7(10) и 5(10) записанных в десятичной системе счисления ( по правилам сложения двоичных беззнаковых чисел ), при четырехразрядной сетке операндов

Десятичное

Число

Двоичное

Число

9(10)

1001(2)

7(10)

0111(2)

2(10)

0010(2)

Рисунок 4.3 - Пример вычисления разности двух чисел: 9(10) и 7(10) записанных в десятичной системе счисления ( по правилам вычитания двоичных беззнаковых чисел ), при четырехразрядной сетке операндов

Десятичное

Число

Двоичное

Число

9(10)

1001(2)

7(10)

0111(2)

16(10)

1

0000(2)

Рисунок 4.4 - Пример вычисления суммы двух чисел: 9(10) и 7(10) записанных в десятичной системе счисления (по правилам сложения двоичных беззнаковых чисел ), при четырехразрядной сетке операндов

В примере, представленном на рис.4.4 видно, что (1) вышла за пределы разрядной сетки операнда.

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

В таких случаях увеличивают разрядную сетку операнда, и результат принимает правильное значение.

Например: необходимо перевести в двоичную систему счисления, а затем найти сумму двух чисел: 9(10) и 7(10) записанных в десятичной системе счисления ( по правилам сложения двоичных беззнаковых чисел ). Длина разрядной сетки операндов равна восьми битам рис.4.5:

Десятичное

Число

Двоичное

Число

9(10)

00001001(2)

7(10)

00000111(2)

16(10)

00010000(2)

Рисунок 4.5 - Пример вычисления суммы двух чисел: 9(10) и 7(10) записанных в десятичной системе счисления ( по правилам сложения двоичных беззнаковых чисел ), при восьмиразрядной сетке операндов

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

Так, для фиксирования ситуации выхода за разрядную сетку результата, как в данном примере, предназначен флаг переноса (FC). Он располагается в бит - (0) регистра флагов eflags. Именно установкой этого флага фиксируется факт переноса (1) из старшего разряда операнда за пределы разрядной сетки.

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

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




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

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