- •4. Лекция. Представление чисел в компьютерах. Двоичная арифметика. Точность вычислений. Память компьютеров и адреса.
- •4.1. Числа, арифметические операции и символы
- •4.1.1. Представление целых чисел
- •4.1.2. Сложение положительных целых чисел
- •4.1.3. Сложение и вычитание целых чисел со знаком
- •4.1.4. Переполнение в целочисленной арифметике
- •4.2. Символы
- •4.3. Обработка чисел с плавающей запятой
- •4.3.1. Стандарт ieee для чисел с плавающей запятой
- •4.3.2. Арифметические операции над числами с плавающей запятой
- •4.3.3. Точность вычислений. Разряды защиты и усечение
- •4.4. Память и адреса
- •4.5. Операции доступа к памяти. Коды ascii символов.
4.1.4. Переполнение в целочисленной арифметике
В системе дополнения до двух n бит могут представлять значения из диапазона от −2n-1 до +2n-1-1. Используя, предположим, четыре бита, можно представить числа от -8 до +7 (рис. 4.1). Когда результат арифметической операции выходит за пределы представимого диапазона, происходит арифметическое переполнение. При сложении беззнаковых чисел индикатором переполнения служит перенос сn из позиции старшего разряда. Однако при сложении чисел со знаком это не срабатывает. Возьмем, к примеру, 4-битовые числа со знаком. Если попытаться сложить числа +7 и +4, результирующим вектором суммы S будет 1011, а это код числа -5. Как видите, результат сложения неверный, хотя сигнал переноса из позиции MSB равен 0. Точно так же при сложении чисел -4 и -6 получим вектор S = 0110 = +6, то есть еще один ошибочный результат. Сигнал переноса в данном случае равен 1. Таким образом, переполнение может произойти при условии, что оба слагаемых имеют одинаковый знак. Сложение же чисел с разными знаками не вызывает переполнения.
Отсюда можно сделать следующие выводы.
1. Переполнение может произойти только при сложении чисел с одинаковыми знаками.
2. При сложении чисел со знаком сигнал переноса из позиции знакового бита не является индикатором переполнения.
Способ обнаружения переполнения заключается в анализе знаков слагаемых Х и У и знака результата. Если оба операнда, Х и Y, имеют один и тот же знак, индикатором переполнения является несовпадение их знака со знаком суммы.
4.2. Символы
Компьютеры должны обрабатывать не только числа, но и текстовую информацию, состоящую из символов. Под термином «символы» подразумеваются буквы алфавита, десятичные цифры, знаки препинания и т. п. Они представляются кодами, обычно имеющими длину 8 бит. Одной из наиболее широко распространенных кодовых таблиц является таблица ASCII (American Standard Code For Information Interchange), приведенная в приложении.
4.3. Обработка чисел с плавающей запятой
До сих пор речь шла только о числах с фиксированной запятой и целочисленных значениях, то есть таких, при обработке которых предполагается, что двоичная запятая находится справа от числа. Если считать, что двоичная запятая располагается справа от знакового разряда, определяя дробное значение, то в системе дополнения до двух значение числа со знаком F, представленного n-разрядной двоичной дробью
В= b0,b-1,b-2 ...b-(n-1)
определяется функцией
F(B) = -b0 20 + b-1 2-1 + b-2 2-2 +...+ b-(n-1) 2-(n-1)
где значение F лежит в диапазоне
-1 ≤ F ≤ 1 - 2-(n-1)
Рассмотрим диапазон значений, которые можно представить в 32-разрядном формате с фиксированной запятой. Если интерпретировать их как целые числа, получается диапазон от 0 до ±2,15 109, а если как дроби — диапазон от ±4.55 10-10 до ±1. Ни одного из этих диапазонов не достаточно для научных вычислений, в которых могут использоваться такие параметры, как число Авогадро (6,0247 х 1023 моль-1) и константа Планка (6,6254 х 10-27 эргс). Необходим такой формат, который подходил бы и для очень больших целых, и для очень маленьких дробных чисел. Для этого компьютер должен уметь представлять числа и оперировать ими таким образом, чтобы позиция двоичной запятой была переменной и автоматически изменялась в процессе вычислений. Такие числа называют числами с плавающей запятой. Напомним, что в числах с фиксированной запятой двоичная запятая всегда располагается в одной и той же позиции.
Поскольку в числе с плавающей запятой позиция двоичной запятой переменная, она должна быть явно задана в представлении числа. Так, в хорошо знакомом вам научном десятичном формате числа могут записываться как 6,0247 х 1023, 6,6254 х 10-27, -1,0341 х 102, -7,3000 х 10-14 и т. д. Говорят, что в этих числах по пять значащих цифр. Масштабные множители (1023, 10-27 и т. д.) указывают позицию десятичной запятой по отношению к значащим цифрам. Числа, в которых десятичная запятая расположена справа от первой (ненулевой) значащей цифры, называют нормализованными. Основание масштабного множителя (10), которое является фиксированным, в машинном представлении чисел с плавающей запятой можно не задавать. Итак, число с плавающей запятой должно содержать знак, значащие цифры и показатель степени 10 в масштабном множителе.
Теперь можно дать точное определение машинного представления числа с плавающей запятой: оно состоит из знака, строки значащих цифр, называемой мантиссой, и показателя степени (фиксированного основания), называемого порядком.