П.3-3 Обратный код представления целых чисел со знаком.




Зачем нужен обратный код?

Обратный код (так же как и дополнительный код) позволяет операцию вычитания заменить операцией сложения → упростить конструкцию арифметическо-логического устройства ЭВМ.

Отрицательные числа при вводе в ЭВМ автоматически преобразуются в дополнительный или обратный коды

 

 

Рассмотрим примеры:

Пример №1

Представить в обратном коде число -1

Код исходного числа (в нашем случае: -1)

Знаковый разряд                
                 

Обратный код, полученный инверсией всех разрядов, кроме знакового:

Знаковый разряд                
                 

 

Пример №2

Представить в обратном коде число -127

Код исходного числа (в нашем случае: -127)

Знаковый разряд                
                 

Обратный код, полученный инверсией всех разрядов, кроме знакового:

Знаковый разряд                
                 

 

Примеры арифметических операций с целыми числами X и Y в обратном коде.

Пример №1 X и Y – положительные

Десятичная система Двоичная система
310 + 710 1010 0 0000 011 + 0 0000 111 0 0001 010

Комментарии:

1. Т.к. оба слагаемых положительные, никаких обратных кодов не пишем.

2. Знаковые разряды положительных чисел равны нулю.

3. Складываем все разряды, в том числе и знаковые.

 

Пример №2 X> 0, Y<0 |Y|>|X|

Сложение в десятичной системе   310 + -1010 -710

 

Сложение в двоичной системе:

1. Представим число -10 в обратном коде:

Код модуля числа: 0001 010

Обратный код модуля: 1110 101

2. Складываем:

  Знак  
Прямой код числа 3   0000 011
Обратный код числа -10   1110 101
Сумма в обратном коде (обратный код числа -7)   1111 000
Сумма в прямом коде (получаем инверсией всех разрядов кроме знакового)   0000 111

1 0000 1112=-710 Все верно!


Пример №3 X> 0, Y<0 |Y|<|X|

Сложение в десятичной системе   1010 + -310 +710

Сложение в двоичной системе:

1. Представим число -3 в обратном коде:

Код модуля числа: 0000 011

Обратный код модуля: 1111 100

2. Складываем:

Прямой код числа 10 0 0000 010
Обратный код числа -3 1 1111 100
Сумма предварительная в обратном коде: произошло переполнение в знаковом разряде, поскольку 12+12=102 0 0000 110
Компьютер «исправляет» полученный результат, прибавляя единицу к младшему разряду. + 0 0000 001
Обратный код результата после «исправления» 0 0000 111

0 0000 1112=710 Верно!

 

Пример №4 X< 0, Y<0

Сложение в десятичной системе   -310 + -710 -1010

Сложение в двоичной системе:

1. Представим число -3 в обратном коде:

Код модуля числа: 0000 011

Обратный код модуля: 1111 100

1а. Представим число -7 в обратном коде:

Код модуля числа: 0000 111

Обратный код модуля: 1111 000

 

2. Складываем:

Обратный код числа -3 1 1111 100
Обратный код числа -7 1 1111 000
Сумма предварительная в обратном коде: произошло переполнение в знаковом разряде, поскольку 12+12+12=112 1 1110 100
Компьютер «исправляет» полученный результат, прибавляя единицу к младшему разряду. + 0 0000 001
Обратный код результата после «исправления» 1 1110 101

1 1110 1012=-1010 Верно!


П.3-4 Возможность переполнение разрядной сетки при сложении переменных целого типа.

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

Рассмотрим пример сложения переменных X>0 и Y>0, когда их сумма X+Y больше или равна 2n-1, где n – количество разрядов формата чисел (для однобайтового формата n=8, 2n-1=27=128):

  Десятичная запись Двоичная запись
Первое слагаемое 6510 0 1000 0012
Второе слагаемое 9710 0 1100 0012
Сумма: получили переполнение 16210 1 0100 0102

Старший разряд разряд суммы 16210 = 1 0100 0102 оказывается в знаковом разряде. Это вызывает несовпадение знаков слагаемых и знака суммы: сигнал для ЭВМ об ошибке переполнения.

 

Практический вывод.

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

То есть типы целых переменных надо задавать обоснованно. В следующем пункте приводятся типы целых переменных со знаком языка Pascal и соответствующие им допустимые числовые диапазоны.

 

П.3-5 Названия и параметры целых переменных со знаком в языках программирования

Формат числа (в байтах) Диапазон Названия типов
Минимальное значение Максимальное значение Pascal
  - 128   shortint
  -32768   integer
  -2147483648   longint

 


П.3-5 Резюме по представлению целых чисел в ЭВМ.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: