Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Баула.doc
Скачиваний:
112
Добавлен:
28.05.2015
Размер:
1.82 Mб
Скачать

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

Рассмотрим представление короткого вещественного числа. Такое число имеет длину 32 бита и содержит три поля:

E

M

1 бит

8 бит

23 бита

Первое поле из одного бита определяет знак числа (знак "плюс" кодируется нулём, "минус" – единицей). Остальная биты, отведённые под хранение вещественного числа, разбивается на два поля: машинный порядок Eи мантиссуM, которая по модулю меньше единицы. Каждое представимое вещественное числоA(кроме числа 0.0) может быть записано в виде:A=1.M*2E–127. Такие вещественные числа называютсянормализованными: первый сомножитель удовлетворяет неравенству1.0  1.M < 2.0. Нормализация необходимо для однозначного представления вещественного числа в виде двух сомножителей. Нулевое число представляется нулями во всех позициях, за исключением, быть может, первой позиции знака числа.

В качестве примера переведём десятичное число –13.25во внутреннее машинное представление. Сначала переведём его в двоичную систему счисления:

–13.2510 = -1101.012

Затем нормализуем это число:

-1101.012 = -1.101012*23

Следовательно, мантисса будет иметь вид 101010000000000000000002, осталось вычислить машинный порядок:3 = E-127; E = 130 = 128 + 2 = 1000000102. Теперь,учитывая знак, получаем вид внутреннего машинного представления числа–13.2510:

1100 0001 0101 0100 0000 0000 0000 00002 = C150000016

Шестнадцатеричные числа в языке Ассемблера принято записывать с буквой hна конце:

C150000016 = C1500000h

Таков формат короткого вещественного числа. Согласно его виду, Eизменяется от 0 до 255, следовательно, диапазон порядков коротких вещественных чисел равен2–127..212810–38..1038. Как и для целых чисел, машинное представление которых мы рассмотрим чуть позже, число представимых вещественных чиселконечно. Заметим также, что, в отличие от целых чисел, в представлении вещественных чисел используетсясимметричнаячисловая ось, то есть для любого положительного числа найдётся соответствующее ему отрицательное (и наоборот).

Некоторые комбинации нулей и единиц в памяти, отведённой под вещественное число, собственно числа не задают, а используются для служебных целей. В частности, E=255обозначает специальное значение"не число"(NAN–notanumber). При попытке производить арифметические операции над такими"числами"возникает аварийная ситуация. Например, значение"не число"может быть присвоено вещественной переменной при её порождении, если эта переменная не имеет начального значения (как говорят,не инициализирована). Такой приём позволяет избежать тяжёлых семантических ошибок, которые могут возникать при работе с неинициализированными переменными, которые при порождении, как правило, имеют случайные значения.

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

Аналогично существуют комбинации битов, задающие специальные значения . Эти значения выдаются в качестве результата, если этот результат такой большой по абсолютной величине, что не представим среди множества машинных вещественных чисел.

Центральный процессор "разумно" (по крайней мере с точки зрения математика) производит арифметические операции над такими "числами". Например, пусть A любое представимое вещественное число, тогда

A   = A;  * A = ; A *  = ; и т.д. 1

Для любознательных студентов заметим, что существует нетрадиционное построение математического анализа, в котором, как и в нашей ЭВМ, бесконечно малые величины определяются не в виде пределов, как в обычном анализе, а существуют в виде"настоящих"вещественных чисел. Изложение нетрадиционного анализа можно посмотреть в книгах [13,14].

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