- •Глава I. Организация вычислений в эвм
- •1. Позиционные системы счисления
- •2. Алгоритмы перевода чисел из одной системы счисления в другую
- •3. Формы представления чисел в двоичной системе счисления
- •4. Операции сложения чисел в прямом, обратном и дополнительном кодах с фиксированной запятой
- •4.2. Умножение чисел в дополнительных кодах
- •4.3. Операция умножения над обратными кодами сомножителей
- •4.6. Выполнение операции сложения над числами с плавающей запятой
- •5. Форматы данных
- •6. Стадии выполнения команды и способы адресации
5. Форматы данных
Данные, размещаемые в устройствах ЭВМ, могут иметь различные форматы, как показано на рис. 1.2. В этих форматах могут находиться числа, указатели адреса и закодированные символы. Числа часто представляются как целые в разрядной сетке 8, 16, 32, 64 бита, где они размещаются в форме с фиксированной запятой после младшего разряда со знаком (S) или без знака. Если число занимает 16 бит, то это целое слово (ЦС), если 32 бита, то оно имеет формат короткого целого (КЦ) – двойное слово; и если оно занимает формат в 64 бита, то это – длинное целое (ДЦ).
В формате двоичных целых чисел без знака все разряды считаются значащими и представление чисел лежит в диапазоне от 0 до 255 (байт), до 65535 (ЦС), 4Г-1 (КЦ) и 264-1 (ДЦ) соответственно десятичной системе счисления. Двоичные числа со знаком представляются в дополнительном коде, и их величина лежит в диапазоне
-2m X +(2m -1),
где m = 7 (байт), 15 (ЦС), 31 (КЦ), 63 (ДЦ) при представлении в форматах байт, слово, двоичное слово и в разрядной сетке 64 бита. Так, в формате “слово” мантиссу числа можно представлять с абсолютной точностью в интервале -32768 до +32767(10) в дополнительном коде с фиксированной запятой после младшего разряда. Числа с плавающей запятой могут иметь в ОЗУ два формата: вещественное с одинарной точностью (ОТ) или вещественное с двойной точностью (ДТ). В этих форматах знак мантиссы числа непременно размещается в старшем разряде старшего байта, за ним располагается смещенный беззнаковый порядок Е (Exponent) размерностью 8 бит (ОТ) или 11 бит (ДТ). В оставшихся младших разрядах размещается в прямом коде нормализованная мантисса с весами значащих цифр от 2-1 до 2-23 или 2-52 (ДТ). Величина Е (характеристика) определяется по формуле
E = p + pmax,
где p – истинный порядок, целое число в прямом коде со знаком; |pmax| – величина смещения, для соответствующих форматов равная
+127, +1023, +16383(10).

Так, если в формате ОТ размещать истинный порядок со знаком, то представление порядка лежит в диапазоне 1.1111111 0.1111111 (-127 +127). При этом минимальный порядок будет равен -127, а максимальный +127(10). Отсюда, с учетом смещения, характеристика числа лежит в диапазоне Emin Emax или 0000 0000 1111 1111, где код 0…0 = Emin соответствуют наибольшему отрицательному порядку, а код 1…1 = Emax наибольшему положительному порядку. В МП код 0…0 используется для представления нуля, для которого и все разряды мантиссы (М) также принимаются равными нулю, а код 1…1 используется для представления , у которой мантисса, с учетом левого сдвига, равна 1,0…0, а знак S указывает на +(S = 0) или -(S = 1) бесконечность. Поэтому диапазон представления чисел, отличных от нуля и бесконечности, определяется характеристикой, лежащей в интервале 00000001 11111110 в формате ОТ или 00000000001 11111111110 в формате ДТ. Смещенный порядок намного упрощает выполнение операций сравнения и “больше-меньше” чисел с плаваюшей запятой.
Мантисса в форматах ОТ и ДТ нормализована и сдвинута на один разряд влево, лежит в диапазоне 1,0…0 до 1,1…1.Так как старшая цифра в разряде 20 в ней всегда равна единице, в форматах ОТ и ДТ она не присутствует (опущена). При передаче в сопроцессор чисел формата ОТ и ДТ они аппаратно преобразуются в расширенный формат (РТ), где цифра мантиссы из разряда 20 восстанавливается путем сдвига мантиссы вправо и занимает место в разряде с весом 2-1 (левый старший разряд мантиссы). РТ используется только в сопроцессоре и в МП для внутренних операций, промежуточных результатов и констант. Поэтому наибольший диапазон представления чисел ЭВМ может быть получен в формате ДТ, где он составляет примерно от
2,23 10-308 до 1,79 10308.
Для представления десятичных чисел в двоичной системе счисления (BCD) используется код 8, 4, 2, 1, в котором каждой десятичной цифре отводится тетрада с весами в разрядах 23, 22, 21, 20, т.е. 8, 4, 2, 1. Такое кодирование в прямом коде позволяет представить десятичные цифры Цi 0,1,2, …,9 кодами 0000, 0001, …,1001. Если десятичные цифры кодировать для целых чисел, то младшая тетрада будет соответствовать цифре (Ц0) с весом 100, более старшая (Ц1) с весом 10+1 и т.д. В формате один байт могут быть закодированы только две десятичные цифры без знака - упакованный формат (УПК) или одна цифра Ц0(Ц1=0) - неупакованный формат (НУПК). Арифметические операции с числами BCD можно осуществлять только в целочисленном устройстве. В сопроцессоре формат УПК из 18 десятичных цифр и одного бита знака в старшем байте используется в операциях загрузки, сохранения и передачи последовательности символов для печати.
Указатели используются для определения адреса команд или операндов в сегментных (близкий) или межсегментных (далекий) передачах. Близкий указатель содержит величину смещения, которая суммируется с базовым адресом сегмента. Далекий указатель загружает селектор в соответствующий сегментный регистр, и уже к новому адресу сегмента суммируется смещение, которое и является линейным адресом операнда или команды. В цепочки объединяются данные, хранящиеся по соседним адресам. Элементами цепочек могут быть биты, байты, слова или двойные слова. Цепочки используются для пересылки части файлов из одной области памяти в другую, поиска конкретных значений внутри цепочки, сравнений цепочек и других операций преобразования баз данных. Длина цепочки может быть практически любой, размещаемой внутри области памяти ЭВМ.
При работе с числами и при ошибках программирования могут возникнуть особые случаи прерывания вычислений ЭВМ по следующим причинам:
- в формате присутствует денормализованное вещественное число, при котором Е = Еmin и мантисса не равна нулю;
- в формате присутствуют не числа, когда Е = Еmax, а мантисса равна любому значению кроме 1,0 … 0 (например, результат, полученный от деления на нуль);
- результат операции не размещается в разрядной сетке ЭВМ (переполнение) или результат слишком мал (антипереполнение);
- результат не может быть представлен точно в предписанном формате (например, деление на 1/3).
