Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика. Лекции. 2009. Измайлов.doc
Скачиваний:
9
Добавлен:
26.10.2018
Размер:
4 Mб
Скачать

4.2. Представление чисел в форме с плавающей точкой

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

, где /q/ < 1.

Здесь – характеристика числа x (целая часть),

s – основание характеристики,

р – порядок,

q – мантисса числа x.

Порядок р может быть положительным или отрицательным целым числом. Он определяет положение точки в числе х.

Для двоичных чисел

, где /q/<1.

На рис.4.2 изображена форма представления чисел с плавающей точкой.

. . . . .

Рис. 4.2 Представление чисел с плавающей точкой.

– разряд для представления знака мантиссы (числа),

– знак порядка,

– модуль порядка,

– мантисса числа.

Например, порядок числа –5 представляется в виде 1000101.

– 5

Поскольку для порядка р, включая его знак, выделено семь разрядов, то порядок может быть любым целым числом от - 63 (1111111) до + 63 (0111111). Все числа, представляемые в форме с плавающей точкой, имеют нормализованный вид. Число называется нормализованным, если удовлетворяет условию

1 > /q/ >=

Для двоичных чисел s = 2. Проще говоря, нормализованное – это такое число, мантисса которого начинается со значащей цифры (не нуль). Двоичное число считается нормализованным, если в старшем разряде мантиссы стоит цифра 1. Наибольшее положительное нормализованное число будет =, наименьшее положительное число – . Число, представленное во всех разрядах разрядной сетки нулем, то есть имеющее положительную нулевую мантиссу и положительный нулевой порядок, называют и с т и н н ы м н у л е м. При фиксированном количестве разрядов мантиссы любая величина представляется в компьютере нормализованным числом с наиболее возможной точностью. В процессе вычислений может получаться ненормализованное число. В этом случае компьютер автоматически нормализует его, изменяя при этом порядок. Например, имеется ненормализованное число . После нормализации оно получит следующий вид . В ненормализованном числе четыре старших разряда представлены нулями. Чтобы их убрать, необходимо уменьшить порядок числа на четыре. То есть записать вместо характеристику . Нормализация невозможна при нулевой мантиссе. В этом случае процесс нормализации блокируется.

Известно также представление чисел в форме с плавающей точкой в системах счисления, основание которых равно положительной целой степени числа 2. То есть . Для восьмеричной системы счисления w=3. а для шестнадцатеричной – w =4. При этом порядок р представляется двоичным целым числом, а мантисса q- числом, в котором группы по w двоичных разрядов изображают цифры мантиссы с основанием системы счисления. Такой способ применим в восьмеричной и шестнадцатеричной системах счисления.

, где ( 1> /q/>=)

, где (1>/q/>=)

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

Арифметические действия над числами с плавающей точкой требуют, помимо операций над мантиссами, определенных операций над порядками (сравнение, вычитание и др.). Для упрощения операций над порядками их сводят к действиям над целыми положительными числами, применяя представление чисел с плавающей точкой со «смещенным порядком».

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

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

4.3. Арифметические операции с числами

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

Сложение Вычитание Умножение

0 + 0 = 0 0 – 0 = 0 0 * 0 = 0

0 + 1 = 1 1 – 0 = 1 0 * 1 = 0

1 + 0 = 1 1 – 1 = 0 1 * 0 = 0

1 + 1 = 0 с переводом 0 – 1 = 1 с заимствовани- 1 * 1 = 1

единицы в старший разряд ем единицы из старшего

разряда

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

перенос 1 1 1

1 0 1 1 0 1.0 1 1

+

1 0 1 1 0. 1 0 0

1 0 0 0 0 1 1. 1 1 1

Вычитание производится аналогично сложению. В этом случае, если от нуля вычитается единица, то из соседнего старшего разряда занимается единица и представляется как две единицы в младшем разряде. Например,

1 1 0 1 1.1 0

1 1 0 1.0 1

1 1 1 0.0 1

Умножение производится аналогично умножению в столбик десятичных чисел. Пример умножения двоичных чисел 1011.1 * 101.01

1 0 1 1.1

*

1 0 1.0 1

1 0 1 1 1

0 0 0 0 0

1 0 1 1 1

0 0 0 0 0

1 0 1 1 1

1 1 1 1 0 0. 0 1 1

Здесь положение точки определяется также как и при умножении десятичных чисел.

Деление чисел в двоичной системе производится аналогично делению чисел в десятичной системе. Чтобы избавиться от точки, необходимо ее перенести на одинаковое количество разрядов в делимом и делителе с записью недостающего нуля в делимом. Например, необходимо поделить число 1100.011 на 10.010.

1100011 10010

10010 101.1

11011

10010

10010

10010

00000

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

прямой,

обратный,

дополнительный.

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

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

Прямой код

Прямой код двоичного числа содержит цифровые разряды, слева от которых записывается знаковый разряд, который выполняет не роль знака, а роль значащей цифры числа. Например, целое положительное двоичное число х=+11010 в прямом коде будет иметь вид = 011010, а отрицательное число у=–10011 будет иметь вид = 110011. В этих кодах знаковые разряды играют роль значащих цифр.

Обратный код

Обратный код образуется из прямого кода путем замены единиц и нулей в цифровых разрядах на их противоположные значения, то есть единицы заменяются нулями, а нули – единицами. Например, число у= –10011 имеет прямой код = 110011, то его обратный код будет иметь вид =101100. Здесь знаковый разряд не меняет своего значения, а цифровые разряды заменены противоположными значениями.

Дополнительный код

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

То есть, если обратный код числа у = –10011 представляет собой

= 101100,

то дополнительный код будет иметь вид

101100

+

1

101101

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

– при использовании обратного кода, возникающая единица переноса из знакового разряда прибавляется к младшему разряду суммы,

– при использовании дополнительного кода, возникающая единица переноса отбрасывается.

Например, требуется сложить два числа

х = = и у= .

Прямой код для положительного числа х имеет вид

Прямой код для отрицательного числа у

Обратный код для отрицательного числа у

Дополнительный код для отрицательного числа у

Операция сложения с использованием обратного кода отрицательного числа у.

0110

+

1100

10010

+

1 перенос единицы со знакового разряда с добавлением в младший разряд суммы.

В результате получается

х + у = 0011 =

Операция сложения с использованием дополнительного кода

0110

+

1101

10011

отбрасывание