Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Диапазоны значений целых чисел со знаком



Формат числа в байтах   Запись с порядком   Обычная запись   Тип переменной в TPascal
  -27... 27-1 -215... 215-1 -231... 231-1   -128... 127 -32768... 32767 -2 147 483 648... 2 147 483 647   Shortint Integer Longint  

Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины — семь разрядов.

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

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

Число 110=12: Число 12710= 11111112:

О 1 1 1111

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

  1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа — двоичный код его абсолютной величины.

Прямой код числа —1: Прямой код числа —127:

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

нули заменяются единицами, а единицы — нулями.

Число –1: Число –127:

Код модуля числа: 0 0000001 Код модуля числа: 0 1111111

Обратный код: 1 1111110 Обратный код: 1 0000000

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

Дополнительный код числа – 1: Дополнительный код числа ‑ 127:

1 1111111 1 0000001

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

Арифметические действия над целыми числами в компьютере

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

 

Сложение в обратных кодах

При сложении обратных кодов чисел А и В имеют место четыре основных и два особых случая. Рассмотрим их.

Случай.

А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен 0.

Десятичная запись: Двоичные коды:

3 0 0000011

_7 0 0000111

10 0 0001010

Случай

А положительное, В отрицательное и по абсолютной величине больше, чем А.

Десятичная запись: Двоичные коды:

3 0 0000011

_–10 1 1110101 Обратный код числа –10

–7 1 1111000 Обратный код числа –7

 

Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = –710.

 

Случай

А положительное, В отрицательное и по абсолютной величине меньшее, чем А.

Десятичная запись: Двоичные коды:

10 0 0001010

_–3 1 1111100 Обратный код числа –3

7 1 0000110

1

0 0000111

Компьютер исправляет полученный первоначально неправильный результат переносом единицы из знакового разряда в младший разряд суммы.

 

Случай

А и В отрицательные.

Десятичная запись: Двоичные коды:

–7 1 1111100 Обратный код числа –3

_–3 1 1111000 Обратный код числа –7

–10 11 1110100

+1

1 1110101 Обратный код числа –10

 

полученный первоначально неправильный результат (обратный код числа –112 вместо обратного кода числа –102) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе в прямой код биты цифровой части числа инвертируется: 1 0001010 = –1010.

При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется ПЕПЕПОЛНЕНИЕМ РАЗРЯДНОЙ СЕТКИ ФОРМАТА ЧИСЛА. Для обнаружения переполнения и оповещения о возникшей ошибке в ПК используются специальные средства.

Случай (переполнение)

А и В положительные, сумма А И В больше либо равна 2n-1, где n – количество разрядов формата чисел ( для однобайтового формата n=8, 2n-1=27=128)

Десятичная запись: Двоичные коды:

65 0 1000001

97 0 1100001

162 1 0100010 Переполнение,

не совпадает знак суммы

 

16210=101000102 , поэтому его нельзя представить однобайтовым кодом.

 

Случай (переполнение)

А и В отрицательные, сумма абсолютных величин А и В больше либо равна 2n-1

Десятичная запись: Двоичные коды:

–63 1 1000000 Обратный код числа –63

–95 1 0100000 Обратный код числа –95

–158 10 1100000 Переполнение

+1

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

 


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 363; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.025 с.)
Главная | Случайная страница | Обратная связь