Лекционный курс по основам информатики (1017139), страница 7
Текст из файла (страница 7)
1 х 231-1.
При выполнении на машине вычислений необходимо чтобы все исходные и получающиеся в процессе вычислений данные не выходили за диапазон чисел, представимых в разрядной сетке.
Сложение и вычитание чисел с фиксированной точкой производится по правилам обычного двоичного сложения и вычитания, так как результат операции не влияет на положение точки.
Недостаток формата с фиксированной точкой (сравнительно небольшой диапазон представляемых чисел) устраняется представлением чисел в формате с плавающей точкой (floating point format), который является основным в компьютерах. Одако наряду с этой формой представления используется также и представление с фиксированной точкой для целых двоичных чисел и операций над ними, в частности операции над кодами адресов.
В формате с плавающей точкой разряды числа разбиваются на два поля, имеющие названия мантисса и порядок. Если обозначить мантиссу буквой M, а порядок - P, то величина числа X =_{M}{P}. Эта запись является двоичным эквивалентом известной формы записи десятичных чисел X=M10+Е, например, 200=210+2, 36000000000=3610+9. структура 16-pазpядного числа в представлении с плавающей точкой и примеры даны в таблице.
Знак порядка | Модуль порядка | Знак мантиссы | Модуль мантиссы | Результат |
15 | 14…10 | 9 | 8…0 | |
0 | 00000 | 0 | 000000000 | 020 |
0 | 00000 | 1 | 000000001 | -120 |
1 | 00100 | 0 | 010001100 | -1402-4 |
0 | 11111 | 0 | 111111111 | 511231 |
Из последнего примера видно, что всего 16 бит могут представлять очень большие числа. Но, отобрав шесть разрядов под порядок, мы уменьшили точность представления числа.
Интересной особенностью формата с плавающей точкой является возможность представления одного числа различными комбинациями значений мантиссы и порядка. Так, например, нуль в этом формате может быть записан 64 способами (мантисса равна 0, порядок принимает любое значение), другие числа могут иметь до 9 представлений, например:
32=12+5=22+4=42+3=82+4=162+1=322+0
2560=52+9=102+8=202+7=402+6=802+5=…=12802+1.
Несмотря на это, представление чисел в формате с плавающей точкой оказалось достаточно удобным для обработки на ЭВМ больших и дробных чисел, хотя при этом пришлось пойти на некоторые дополнения. Так, например, чтобы увеличить точность числа, для его представления отводят два, а иногда и четыре 16-pазpядных поля. Вообще же в вычислительных машинах используются отличающиеся друг от друга форматы с плавающей точкой, но основаны они на едином принципе представления: порядок и мантисса. Для выполнения арифметических операций над числами в формате с плавающей точкой используются точные правила, зависящие от конкретной реализации ЭВМ, но содержащие общий подход. Так, сложение и вычитание чисел с плавающей точкой сводится к выравниванию позиций точки с тем, чтобы оба числа имели одинаковый порядок, а затем производится сложение или вычитание мантисс. Для умножения и деления выравнивания позиций точек не требуется; производится лишь сложение (при умножении) или вычитание (при делении) порядков и умножение или деление мантисс.
На ЭВМ, ориентированных на выполнение большого количества операции с числами в формате с плавающей точкой, имеются специальные аппаратные средства, автоматически реализующие порядок действий при арифметических вычислениях и преобразованиях таких чисел (математические сопроцессоры).
Представление числа с плавающей точкой в общем виде имеет вид:
X= spq ; q 1
где q мантисса числа Х,
p – порядок,
s – основание характеристики.
Обычно число s совпадает с основанием мантиссы q. Мантисса q – правильная дробь. Порядок p, который может быть положительным или отрицательным целым числом, определяет положение запятой в числе Х. Для двоичных чисел
х = 2pq; q 1.
Рассмотрим пример в котором слова имеют длины 32 двоичных разряда. Пусть число Х =2pq, изображается в машине двоичным словом а0в0в1 … в6а1а2…. a24 которому соответствует следующий формат данных:
a0 | b0 | b1 | … | b6 | a1 | a2 | … | a24 |
Разряды в0..в6 используются для представления порядка при этом разряд в0 изображает знак порядка, а разряды в1.. в6 – модуль порядка, остальные разряды а0 .. а24 отводятся под изображение мантиссы, причем а0 – знак мантиссы а1.. а24 – модуль мантиссы. Двоичное число х= 2pq, называется нормализованным, если мантисса Q удовлетворяет следующему условию 1 q ½, т.е. двоичное число нормализовано если в старшем разряде мантиссы стоит 1. Под порядок отведено со знаком 7 разрядов то порядок может быть от –63 до +63 соответственно. Наибольшее и наименьшее нормализованное положительные числа в этой разрядной сетке соответственно равны:
263*0,111 … 1 = 263(1-2-24) и
2-63*0,1000..0=2-64.
Следовательно с учетом знака q в этой разрядной сетке можно представить числа, лежащие в диапазоне от –263(1-224) до –2-64 и от +2-64 до +263(1-2-24), что значительно превышает диапазон чисел с фиксированной точкой, представимых в том же 32х-разрядном слове. При фиксированном количестве разрядов мантиссы любая величина, представляется в машине с наибольшей возможной точностью нормализованным числом. Если в процессе вычислений получается ненормализованное число, то машина с плавающей запятой автоматически нормализует его. Пусть r старших разрядов мантиссы равно 0. Тогда, нормализация заключатся в сдвиге мантиссы на r разрядов влево и уменьшении порядка на r единиц. При этом в младшие r разрядов мантиссы записывается 0. В последних моделях ЭВМ получило распространение представление чисел с плавающей запятой в системах счисления с основанием, равным целой степени числа 2 (S=2w), х = spq(1>q1/s). При этом порядок представляется двоичным целым числом, а мантисса q – числом, в котором группы по w двоичных разрядов изображают цифры мантиссы с основанием системы счисления s=2w. Использование для чисел с плавающей запятой недвоичного основания несколько уменьшает точность вычислений (при заданном количестве разрядом мантиссы), но позволяет увеличить диапазон представимых в машине чисел и ускорить выполнение некоторых операций, в частности нормализации, за счет того, что сдвиг может производиться на несколько разрядов сразу. В ЕС ЭВМ числа с плавающей запятой представляются в шестнадцатеричной системе счисления: х=16pq (1>q1/16) .
a0 | b0 | b1 | … | b6 | r1 | r2 | … | r6 |
Модуль порядка p изображается целым шестиразрядным двоичным числом,. а мантисса q рассматривается как число, составленное из шестнадцатеричных цифр в виде:
6
q= Гj 16-j (Гj = 0,1,2 …, F)
j=1
В случае с шестнадцатеричными числами с плавающей запятой число Х считается нормализованным, если старшая шестнадцатеричная цифра Г1 отлична от 0. В нормализованном числе три старшие двоичные цифры могут равняться 0. Диапазон представления нормализованных чисел: -1663(1-16-6) до –16-64 и от +16-64 до 1663(1-16-6). Для упрощения операций над порядками их сводят к действиям над целыми положительными числами, применяя представление чисел с плавающей запятой со смещенным порядком (ЕС ЭВМ). В случае чисел со смещенным порядком при записи числа в память к его порядку p прибавляется целое число – смещение N=2k, где k – число двоичных разрядов, используемых для модуля порядка. Смещенный порядок pсм=p + N всегда положителен. Для его представления нужно такое же число разрядов как для p со знаком.
Если семи десятичных разрядов не хватает то в вводится формат двойной длины, занимающий два машинных слова (двойная точность), не меняется количество разрядов для изображения порядка, и, следовательно, сохраняется диапазон представления чисел, а длина мантиссы увеличивается до 14 шестнадцатеричных разрядов.
3.6. Прямая, обратная и дополнительная форма представления двоичных чисел в ЭВМ
В ЭВМ с целью упрощения арифметических операций применяют специальные коды для представления чисел. Например, упрощается определение знака результата операции, вычитание есть сложение кодов, облегчено определение переполнения разрядной сетки. Положительные числа представляются в прямом коде. Прямой код Gпр двоичной дроби с (n-1)–разрядной мантиссой G=0,к1,к2 …. к n-1 определяется как Gпр = Gкогда G0 и 1+G, когда G 0 Прямой код целого n – разрядного двоичного числа G = кn-2,kn-3, …k1,k0 имеет вид Gпр=Gпри G0 и 2n-1+G при G0. Прямой код числа со знаком можно рассматривать как двоичное число без знака , которое определяется этими соотношениями. Операция вычитания (алгебраического сложения) сводится к операции простого арифметического сложения при помощи обратного и дополнительного кодов, используемых для представления отрицательных чисел в машине. Что бы представить двоичное отрицательное число в обратном коде нужно в знаковый разряд поставить 1, а во всех других разрядах заменить 1 нулями, а 0 – единицами. При этом отрицательная двоичная дробь G-= -0,k1,k2, …, kn-1в обратном коде примет вид
G-обр= 1,r1,r2, …,rn-1 ,
а отрицательное двоичное число G= - kn-2,kn-3, …,k1,k0 соответственно
G-обр= 1,rn-2,rn-3, …,r1,r0 где ri=0 , если ki=1 и наоборот.
При представлении отрицательного двоичного числа в дополнительном коде ставят 1 в разряд знака, а цифровую часть числа заменяют дополнением модуля числа до 2 или соответственно 2n, для дробей и целых чисел. Дополнительный код отрицательного числа G- определяется выражением G-доп=2- G-, если G- - двоичная дробь, и G-доп = 2n - G- если G- - целое двоичное число. Таким образом, дополнительный код числа может быть получен из обратного путем прибавления 1 к младшему разряду обратного кода.
4. ЛОГИЧЕСКИЕ ОСНОВЫ ЭВМ
4.1. Алгебра логики
В алгебре логики рассматриваются переменные, которые могут принимать только два значения 0 и 1. Переменные будем обозначать латинскими буквами x,y,z…, а также x0,x1,…xn, y0,y1,…yn и т.д.
Отношение эквивалентности (равенства «=»), удовлетворяет следующим свойствам:
рефлексивность: x=x;
симметричность: если x=y то y=x;
транзитивность: x=y и y=z то x=z, отсюда следует принцип, если x=y, то в любой формуле, содержащей x, в место x можно подставить y, и в результате будет получена эквивалентная формула.
4.2 Логические операции
Это три операции:
дизъюнкция, операция ИЛИ, логическое сложение. Обозначают знаком V или +;
конъюнкция, опе6рация И, логическое умножение, обозначается знаком ^, или &, или *, или опускается;
отрицание, инверсия, операция НЕ, обозначается чертой над переменной, или над элементами 0 и 1, или над операциями с охватом всех переменных входящих в операцию ( );