Плавающая запятая

В ЭВМ с плавающей запятой число представляется в виде:

X = ± Mx * q±p,

где: Mx - мантисса числа;

q - основание системы счисления;

p - порядок.

Разрядная сетка машины принимает следующий вид:

 

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

Пусть "m" разрядов отведено под изображение мантиссы, а "k" разрядов под изображение порядка. Тогда для двоичной системы и нормализованного вида числа:

 

q = 2;

 

0,1 Mx < 1 - нормализованная мантисса.

 

 

То есть диапазон чисел:

 

Теоретически "плавающая запятая" имеет преимущества перед "фиксированной". Но соответствующее устройство получается намного

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

 

3.3.Коды, применяемые для изображения отрицательных чисел.

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

 

3.3.1.Прямой код.

Это естественное и наиболее привычное представление числа в следующем виде:

знак:

"+" соответствует 0

"-" соответствует 1

В цифровых разрядах пишется модуль положительного или отрицательного числа.

[X]пк - обозначим таким образом изображение числа "X" в прямом коде.

 

 

 

Рассмотрим диапазоны представляемых чисел:

X+min = 0,000....0 - изображение положительного нуля

X+max = 0,111....1 = 1 - 2-n

X-min = 1,111....1 = -(1-2-n)

X-max = 1,000....0 - изображение отрицательного нуля.

Таким образом, нуль имеет двоякое изображение.

Замечания:

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

2. при выполнении операции умножения отдельно и независимо находятся модули произведений кодов, а знак находится как результат операции сложения по модулю два:

[X]пк * [Y]пк = sign Z. |Z|

|Z| = |X|*|Y|

sign Z = sign X sign Y или Sz = Sx Sy

Собственно умножение выполняется с применением микроопераций сложения и сдвига.

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

Вследствие ряда неудобств в ЭВМ операции вычитания, сложения чисел с разными знаками и деления в прямом коде практически не выполняются.