Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000544.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

5.3.3. Особенности выполнения сложения двоичных чисел без знака и со знаком

Конечное число разрядов используемых в ЭВМ двоичных чисел может приводить к появлению ошибок при выполнении арифметических операций. Рассмотрим эти ситуации на примере сложения 4-разрядных двоичных чисел.

1. Примеры сложения чисел без знака.

3 0011 6 0110 10 1010

+ 2 0010 + 7 0111 + 11 1011

5 0101 13 1101 21 10101

результат правильный результат правильный результат неверный

В третьем примере результат двоичного сложения равен 5, т.к. старший разряд выходящий за разрядную сетку игнорируется.

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

2. Примеры сложения чисел со знаком.

5 0101 - 3 1101

+ 6 0110 - 6 1010

11 1011  дв.-доп. код числа -5 - 9 1 0111  дв.код числа +7

 результат неверный  результат неверный

перенос в старший разряд перенос из старшего разряда (игнорируется)

7 0111 - 8 1000

+ 7 0111 - 8 1000

14 1110  дв.-доп. код числа –2 -16 1 0000  дв. доп. код числа 0

 результат неверный  результат неверный

перенос в старший разряд перенос из старшего разряда (игнорируется)

6 0110

- 3 1101

3 1 0011  дв.-доп. код числа 3, результат правильный

перенос из старшего разряда (игнорируется) перенос в старший разряд

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

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

5.4. Двоично-десятичная система представления чисел

В двоично-десятичной системе счисления десятичные цифры от 0 до 9 представляют 4-разрядными двоичными числами от 0000 до 1001 и каждая десятичная цифра занимает половину байта (4 бита). Преобразование из двоично-десятичной системы в десятичную (и обратно) выполняется путем прямой замены четырех двоичных цифр (одной тетрады) одной десятичной (и обратно). Две двоично-десятичные цифры занимают 1 байт.

С помощью 1 байта можно представлять значения от 0 до 99, а не от 0 до 255, как при использовании 8-разрядного двоичного числа без знака. Используя 1 байт для представления каждых двух десятичных цифр, можно сформировать двоично-десятичные числа с требуемым числом десятичных разрядов. Этот формат представления двоично-десятичных чисел называется упакованным. В ЭВМ используется также неупакованный формат, когда каждая цифра занимает байт.

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

Сложение двоично-десятичных чисел, имеющих 1 десятичный разряд, выполняется как сложение 4-разрядных двоичных чисел без знака, но при получении результата больше 1001 необходимо производить коррекцию путем прибавления двоичного кода числа 6. Если первоначальное двоичное сложение или прибавление корректирующего числа приводит к возникновению переноса при сложении значений двух десятичных разрядов двоично-десятичных чисел, то осуществляется перенос в следующий десятичный разряд.

Примеры:

4 0100 5 0101 5 0101

+ 5 +0101 +9 +1001 +19 +0001 1001

9 1001 14 1110 = 14 24 0001 1110

р езультат правильный + 0110  коррекция + 0110

1 0100 0010 0100

п еренос в старший разряд 1 4 2 4

Несмотря на то, что память при двоично-десятичном представлении чисел используется менее эффективно, такая система нашла свое применение во многих устройствах ввода-вывода десятичных данных. Многие ЭВМ имеют полный набор команд обработки данных в двоично-десятичной системе. Во многих ЭВМ предусмотрена команда "Десятичная коррекция", позволяющая приспособить двоичные операции для обработки двоично-десятичных данных.