Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебное пособие ИНФОРМАТИКА.doc
Скачиваний:
130
Добавлен:
09.06.2015
Размер:
2.16 Mб
Скачать

2.5.4.Смещенный код.

Помимо рассмотренных кодов для представления чисел со знаком применяется еще смещенный код. Этот код обычно используется для представления целых чисел, задающих порядки чисел с плавающей точкой. Определяется смещенный код двоичного числа G, представленного в n - разрядной сетке, как Gсм=А+G, либо, что то же самое,

А+|G| , при G>=0;

Gсм= A - |G| , при G<0,

где А (смещение) – величина, равная весу старшего разряда сетки (для целых А=2n-1). Диапазон представляемых чисел такой же, как и у дополнительного кода. Единица в знаковом разряде смещенного кода указывает на представление положительного числа, ноль – отрицательного.

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

Существует простое правило перехода к смещенному коду от дополнительного (и наоборот): для перехода необходимо инвертировать знаковый разряд кода.

Важной особенностью смещенного кода является то, что из G1см>G2см следует G1>G2. Использование смещенных кодов упрощает сравнение чисел со знаком, сводя его к сравнению представляющих их чисел без знака (смещенных кодов).

Сложение смещенных кодов может выполняться в соответствии со следующим ниже утверждением.

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

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

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

Пример кодирования положительного двоичного числа 111.01 в форме с плавающей точкой. Сначала число 111.01 нужно представить в нормализованном виде, т.е. чтобы оно удовлетворяло условию 1>|q|>=1/s (где q – мантисса, s – основание характеристики [обычно целая степень числа 2]).

Для этого примера мантиссой нормализованного числа является 0.11101. Чтобы заданное число не изменилось, порядок должен быть увеличен на столько единиц, на сколько была сдвинута влево точка, отделяющая целую часть от дробной, т.е. на (3)10или (11)2. Первоначально значение порядка было равно нулю, поэтому порядок нормализованного числа равен (11)2 .

Представим нормализованное число в формате для двоичного 4-х байтного числа. Порядок представляется в смещённом коде, а мантисса со знаком числа – в прямом, обратном или дополнительном коде (при кодировании знак числа рассматривается как знак мантиссы).

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

2.5.6. Сложение чисел в форме с плавающей точкой

Сложение двух чисел, представленных в форме с плавающей точкой осуществляется по следующему алгоритму:

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

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

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

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

Полученный код результата при необходимости нормализуется (см. раздел 2.5.5.).