Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ-шаблонответа.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
299.37 Кб
Скачать

Как перейти от представления с однарной точностью к представлению с двойной ?

Для положительных чисел просто - старшее слово - нулевое.

Для отрицательных - операция расширения знака (SignExtention). Ее действие состоит в заполнении старшего слова знаковыми битами младшего. В системе команд I*86 есть команды cbw преобразования 8 бит16 бит, cwdпреобразования 16 бит  32 бит и cdq(ConvertBytetoWordили WordtoDoubleили DoubletoQuad).

В некоторых архитектурах операция знака может быть совмещена воперацией загрузки регистра. Так сделано в архитектуре ARM

  1. Опишите особенности команд целочисленного умножения в цифровых компьютерах.

Умножение/деление на степень основания системы счисления с помощью операции сдвига.

Частный случай умножения – умножение на степень 2-х, (т.е. на степень основания системы счисления) можно реализовать сдвигом операнда на соответствующее число разрядов влево для положительной степени или вправо для отрицательной. Для этого в системе команд может иметься команда арифметического сдвига. При арифметическом сдвиге вправо (деление на степень двойки) знаковый разряд числа сохраняет свое значение неизменным, а при сдвиге влево (умножение на степень двойки) правый конец операнда заполняется нулями. Если при сдвиге влево знаковый разряд операнда изменял свое значение – это означает, что при умножении произошло переполнение (выход за пределы диапазона представимых значений), это вызывает изменение флагов cf и/илиof

В системах команд почти всех современных процессорах есть команды умножения и деления, однако для знаковых и для беззнаковых операндов команды умножения (в отличие от команд сложения и вычитания) различаются. Это означает, что если два одни и те же двоичных слова интерпретировать в одном случае как беззнаковые сомножители, а в другом как сомножители со знаком, то результаты умножения в этих двух случаях будут различными по значению, а, следовательно, будут различаться и их двоичные представления.

Например, умножаем две кодовые комбинации (в 4-разрядной сетке):

1001 0011

При беззнаковой интерпретации это 9 3 = +27  0001 1011

При знаковой интерпретации это (-7) 3 = -21  1110 1011

  1. В чем состоит особенность реализации команд целочисленного деления в ограниченной разрядной сетке ?

Деление

(2n) / (n) = (n)q(n)r, т.е. при целочисленном делении формируется не только частное, но и остаток, разрядность делимого вдвое больше, чем разрядности делителя, частного и остатка. Однако в борьбе с переполнением при формировании результата деления даже такое соотношение разрядностей не всегда помогает. Если делимое очень большое, а делитель маленький, частное выйдет за границу n-битовой сетки.

  1. Представление данных в формате плавающей точки. Его особенности. Для чего в стандарт плавающей точки введены специальные значения (бесконечности, псевдонуль и т.п.).

Отметим снова некоторые свойства целочисленного формата представления величин:

а) разрешающая способность (минимальное изменение величины, которое можно отобразить), равна 1 (при любом числе разрядов n).

б) диапазон представимых значений однозначно определяется количеством разрядов n в разрядной сетке: 2n, т.е. разрешающая способность и диапазон связаны однозначно при данном количестве битов в представлении числа.

Число в формате ПТ можно представить как Мантисса основание (порядок).

Если определенным образом выбрано нормализованное представление, то при его записи в двоичном виде старший разряд мантиссы всегда двоичная 1 - ее можно не запоминать - сэкономим бит !!!

В чем состоит процедура нормализации: двигаем мантиссу, пока не получим нормализованного представления, и при этом корректируем порядок, для того, чтобы сохранить величину числа неизменной.

Пример: число 101101.110001000...b * 2d1010

Пусть выбрано нормализованное представление, в котором мантисса содержит один значащий разряд в целой части (всегда = 1).

При нормализации сдвигаем мантиссу вправо на 5 разрядов (это эквивалентно делению мантиссы на 25=32, и корректируем порядок (увеличиваем его на 5d=101b).

Нормализованное представление: 1.011011100010...b *2d1111.

Опуская неявный бит, получим мантиссу: 011011100010..., порядок ..01111.

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

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