Скачиваний:
23
Добавлен:
11.05.2015
Размер:
998.91 Кб
Скачать

2.2.6. Вещественные числа

Во многих языках программирования число, записанное с десятичной точкой, называют вещественным числом.

Для представления в машине вещественных чисел используется формат с «плавающей» точкой, т.е. используется нормализованная форма записи числа. Нормальная форма широко используется в математике для укороченной формы записи многоразрядных чисел, особенно если он содержит в себе значительное количество 0:

1 000 000= 106, 0.000 000 456= 0.456 10-6, 1 567 589= 1.567589 106.

При нормальной форме число представляется в виде мантиссы со знаком и показателя порядка n, записанного в виде 10n. Для нормализованной формы характерна следующая конструкция:

<знак числа> 0. <мантисса>  <основание системы> <знак порядка> <порядок>, причем мантисса всегда начинается со значащей цифры, т.е. она не может быть равна 0!

Пример нормализованных чисел:

1 000 000= 0.1 10 7 1 567 589= 0.1567589 107

-542.39= - 0.5423910 3 0.000 000 456= 0.456 10-6

43.71(8)= 0.4371 102(8) 100111.011(2)= 0.100111011 101001(2)

Обратите внимание, что основание любой системы записывается в виде 10.

Теперь подробно рассмотрим машинное представление нормализованных двоичных чисел. Возьмем число 26(8) и представим его в виде двоичного нормализованного числа (основание и порядок для простоты будем записывать в десятичной системе):

28(8)= 010 110(2) = 0.010110 (2)* 2+6(10) или в нормализованной форме

0. 1011(2) * 2+5(10)

Но в двоичной системе всего две цифры - 0 и 1. Из них значащая только 1. И следовательно, мантисса М всегда будет начинаться с единицы. Т.е. всегда в двоичной системе выполняется:

0 <= M < 1 (2.9)

Выражение 2.9 говорит о том, что вещественное число в машине не может быть равно нулю. Или (Х-Х)0 !!! Для того чтобы машина все-таки могла правильно решить это уравнение, в ней производится аппаратное обнуление результата.

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

28(8)= 010 110(2)

будет представлено в виде

0 0110 1 101(2)

Вещественное число может занимать два машинных слова и иметь формат, представленный на рис. 2.3.

Рис. 2.3

Оценим диапазон представления вещественных чисел. Мантисса занимает 16 разрядов младшего слова, 7 разрядов старшего слова и еще одну скрытую единицу. Итого  24 разряда, и диапазон составит 224. Под порядок отведено 7 разрядов. Знаку «+» соответствует 1, а знаку «-»  0. Порядок основания 2 изменяется в пределах (-128, +127). Это соответствует, примерно, 10-39 и 10+39 .

Запишем уже рассмотренное число 28(8) в машинном формате (рис. 2.4).

Рис. 2.4

Если перейти к восьмеричном системе, то вещественное число 28(8) в машинном формате будет выглядеть:

042540.

2.3. Форматы команд

Предположим, что мы хотим сложить два произвольных числа на некоторой абстрактной вычислительной машине. Она имеет процессор, выполняющий заданный нами набор команд и адресуемую память. Вводить информацию мы будем с единственного устройства ввода - клавиатуры, а выводить можем на принтер или на дисплей. Попробуем написать программу для выполнения этой задачи.

1. Используем команду ввод для считывания с клавиатуры первого числа. Но нам еще надо указать ячейку, в которую должно быть записано первое число. Дальше команду ввод повторим, но укажем другой адрес для записи второго числа:

Код операции

Адрес 1

Ввод

А1

Ввод

А2

2. Теперь введем команду сложения +. Складывать будем содержимое ячейки с адресом А1 и ячейки с адресом А2. Результат, полученный в процессоре, необходимо записать в память, например, в ячейку А3:

Код операции

Адрес 1

Адрес 2

Адрес 3

+

А1

А2

А3

3. Далее выведем результат из ячейки А3 командой вывод, указав, например, адрес принтера:

Код операции

Адрес 1

Адрес 2

Адрес 3

Вывод

А3

Принтер

4. Для завершения программы осталось ввести последнюю команду для остановки машины  стоп:

Код операции

Адрес 1

Адрес 2

Адрес 3

стоп

В итоге программа будет иметь вид:

Код операции

Адрес 1

Адрес 2

Адрес 3

Ввод

А1

Ввод

А2

+

А1

А2

А3

Вывод

А3

Принтер

Стоп

Проанализируем полученную программу. Во-первых, отметим, что каждая команда имеет код операции (КОП), т.е. элементарную инструкцию, которую машина должна выполнить. Во-вторых, почти все команды имеют адресную часть, в которой указывается, где находится операнд. Но количество адресов в различных командах разное. Есть команды с одним адресом, с двумя, с тремя и безадресные. Естественно, что удобно иметь трехадресную машину, но каждое адресное поле требует расширения аппаратной части, а трехадресные команды встречаются относительно редко. До появления микроЭВМ выпускались машины с фиксированной адресностью: дешевые и медленнодействующие одноадресные и дорогие трехадресные.

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

К безадресным командам обычно относятся команды управления машиной, обращения к подпрограмме, команды прерывания, команды изменения слова состояния процессора, условных и безусловных переходов и др.

Команды эти могут иметь различный формат, в том числе и содержать в себе адреса, но к операндам они не обращаются.

О

,

дноадресные командыобычно по некоторому правилу модифицируют операнд. Сюда можно отнести команды изменения знака, очистки ячейки, инвертирования, прибавления или вычитания 1 и т.п. Команды имеют следующий формат:

КОП

D

где D является операндом или определяет адрес операнда.

Двухадресные команды обрабатывают два операнда и могут иметь, например, такой формат:

,

КОП

S

D

где S — источник, а D — приемник (порядок следования внутри команды S и D в разных семействах машин различный). Операция производится в следующем порядке:

D <операция> S  D,

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

К двухадресным командам относятся такие команды, как сложение, вычитание, сравнение двух операндов, пересылки числа из одной ячейки в другую, некоторые логические команды.

Соседние файлы в папке Введение в вычислительную технику.