Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Диапазоны значений целых чисел со знаком
Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины — семь разрядов. В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком: прямой код, обратный код, дополнительный код. Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией сложения. Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде. Число 110=12: Число 12710= 11111112: О 1 1 1111 Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение:
Прямой код числа —1: Прямой код числа —127: 1. Обратный код получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы — нулями. Число –1: Число –127: Код модуля числа: 0 0000001 Код модуля числа: 0 1111111 Обратный код: 1 1111110 Обратный код: 1 0000000
Дополнительный код числа – 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; Просмотров: 413; Нарушение авторского права страницы