logo search
Основы автоматизации производства

3. Формы представления чисел в эвм. Машинные коды

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

Естественная форма записи. Число представляют в виде последовательности двоичных цифр, разделенных запятой на целую и дробную части. Запятая фиксируется перед старшим цифровым разрядом. Это обеспечивает гарантию того, что в процессе умножения произведение никогда не может получится больше единицы. Каждую двоичную цифру записывают в строго определенном разряде. Специальный разряд отводят для представления знака числа. Если это число положительное, то в знаковом разряде записывается, нуль, если отрицательное число – единица.

В современных ЭВМ (типа СМ) запятую фиксируют справа от самого младшего разряда и таким образом все числа представляют целыми.

В разрядной сетке ЭВМ, работающих с числами с фиксированной запятой, для представления числа помимо знакового разряда выделяют n двоичных разрядов. «Вес» каждого разряда изменяется от минимального значения (2n) до максимального (–21). Следовательно, числа могут быть представлены от минимального отрицательного числа (Аmin)2 = 1,11 ... 1 до максимального положительного (Аmax)2 = 0,11 ... 1. Для представления чисел с фиксированной запятой, которые не укладываются в диапазоне от Аmin до Ашах, используют масштабные коэффициенты. С их помощью исходные, промежуточные и конечные результаты умножения на масштабные коэффициенты должны находиться в заданном диапазоне.

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

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

A = а × dp,

где а – цифровая часть числа (мантисса); р – целое положительное или отрицательное число, называемое порядком; d – основание системы счисления.

Число 123,45 в десятичной системе может быть записано так 123,45 = 0,12345 × 103 = 0,012345 × 104 и т. д. Числа 0,12345 и 0,012345 – это мантиссы; 10 – основание десятичной системы счисления; числа 3 и 4 – порядки.

Для ввода числа в нормальной форме в ЭВМ оно записывается следующим образом: +0,12345 + 3 или +0,012345 + 4. Отрицательный знак у порядка возникает при представлении в нормальной форме дробей. Число 0,00321 = 0,321 × 10-2 или +321–2.

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

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

Прямой код основан на представлении чисел в виде их абсолютного значения с кодом соответствующего знака: плюса или минуса. Число А в прямом коде обозначается [А]пр. Прямой код двоичного числа совпадает по изображению с записью самого числа, но в разряде знака ставится 1, если число отрицательное. Например, запишем двоичные числа +0,1101 и –0,1101 в прямом коде. Если А = +0,1101, то [А]пр = 0,1101; если А = = –0,1101, то [А]пр = 1,1101.

Прямой код в ЭВМ используется для представления положительных чисел при их сложении в арифметических устройствах, для записи положительных и отрицательных чисел в памяти, а также в устройствах ввода-вывода.

Число А в обратном коде обозначается [А]оСр. Если двоичное число А является положительным (А>0), то обратный код этого числа совпадает с прямым кодом, т. е. [А]обр = [А]пр = А. Если А < 0, то обратный код получают следующим образом. В знаковом разряде записывается единица, а в разрядах мантиссы единицы заменяют на нули, а нули на единицы. Например, если А = –1,1010101, то [А]обр = 1,0101010.

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

Число А в дополнительном коде обозначается [А]доп. Дополнительный код положительного числа совпадает с его прямым кодом, т. е. при А>0 [А]доп = [А]пр = А. Для отрицательного числа дополнительный код получается по следующему правилу. В знаковом разряде записывается единица, а в разряде мантиссы нули заменяются единицами, а единицы – нулями (аналогично тому, как это выполняется в обратном коде), после чего к младшему разряду прибавляется единица.

Таким образом, чтобы получить число в дополнительном коде, его преобразуют в обратный код, а затем к младшему разряду полученного числа прибавляют единицу. Например, представим числа А1 = 0,1111 и А2=–0,1111 в прямом, обратном и дополнительном кодах:

[A1]пр = [A1]обр = [A1]доп

[A2]пр = 1,1111;

[A1]обр = 1,0000;

[A1]доп = 1,0001.

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

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