Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Диапазон значений знаковых чисел
Рассмотрим однобайтовое представление. Возможные дополнительные коды знаковых чисел: 0111 1111 ... 0000 0001 0000 0000 1111 1111 1111 1110 Отрицательные числа ... 1000 0000 Рассмотрим десятичные значения этих чисел: 0111 1111 = 27 – 1 = 128 - 1 = 127 0000 0001 = 1 0000 0000 = 0 1111 1111 -> -(000 0000 + 1) = -1 1111 1110 -> -(000 0001 + 1) = -2 1000 0000 -> -(111 1111 + 1) = -(1000 0000) = -27 = -128 Таким образом диапазон значений знаковых однобайтовых чисел: Аналогично, диапазон значений двухбайтовых целых чисел: Диапазон значений четырехбайтовых целых чисел со знаком: Сложение и вычитание целых чисел
В большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Это позволяет существенно упростить конструкцию арифметико-логического устройства процессора. Сложение обратных кодов. Здесь при сложении чисел А и В имеют место четыре основных и два особых случая: 1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например:
Получен правильный результат. 2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:
Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = –710. 3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:
Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы.
4. А и В отрицательные. Например:
Полученный первоначально неправильный результат (обратный код числа –1110 вместо обратного кода числа –1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = –1010. Переполнение При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства. Ниже приведены два возможных случая переполнения. 5. А и В положительные, сумма А+В больше, либо равна 2n–1, где n — количество разрядов формата чисел (для однобайтового формата n=8, 2n–1 = 27 = 128). Например:
Обратите внимание: в результате сложения положительных чисел получен отрицательный результат! Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки. 6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n–1. Например:
В результате сложения отрицательных чисел получен результат > 0! Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.
Сложение дополнительных кодов. Здесь также имеют место рассмотренные выше шесть случаев: 1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода (коды неотрицательных чисел совпадают). 2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:
Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает. 4. А и В отрицательные. Например:
Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает. Случаи переполнения Для обнаружения переполнения разрядной сетки знаковый разряд дублируется. Такое представление чисел называется модифицированным дополнительным кодом: 1) 65 00 100 0001 + 97+ 00 110 0001 162 01 010 0010 Разные цифры в знаковых разрядах свидетельствуют о том, что произошло переполнение. 2) -65 11 011 1111 + -97+ 11 001 1111 -162 10 101 1110 Переполнение! Для проверки знаковых разрядов используют результат операции “исключающее ИЛИ”, которая дает значение 1 только если операнды различны. Сравнение рассмотренных форм кодирования целых чисел со знаком показывает: на преобразование отрицательного числа в обратный код компьютер затрачивает меньше времени, чем на преобразование в дополнительный код, так как последнее состоит из двух шагов — образования обратного кода и прибавления единицы к его младшему разряду; время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата, поэтому для ускорения выполнения расчетов используют дополнительный код.
Умножение и деление Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения. Для иллюстрации умножим 1100112 на 1011012.
Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.
Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 725; Нарушение авторского права страницы