Читайте также:
|
|
Машинное изображение чисел, или внутреннее представление элементарных числовых данных, соответствует физическому уровню представления чисел в двоичном алфавите в регистрах, ячейках памяти и на других машинных носителях информации. Это представление выбирается так, чтобы обеспечить надежное хранение, передачу и обработку числовых данных с учетом знаков чисел [2, 3, 5, 6].
Для машинного изображения числа X введем обозначение [X].
В записи [X] самый левый разряд будем считать знаковым, причем вместо знака плюс для положительных чисел в этот разряд будем записывать цифру "0", вместо знака минус - старшую цифру системы счисления Н. Если считать, что запятая Фиксирована перед младшим разрядом, то машинные числа всегда меньше единицы. Например,
а) -------------------------------------
: 0: 1: 0: 1: 1: 0: 1: 1: 0: 1
-------------------------------------
ß--------цифровые разряды знаковый разряд---------->
знаковые разряды
б) --------------------------------------------
: 1: 0: 0: 1: 1: 0: 1: 1: 0: 0: 1: 1:
---------------------------------------------
Рис. 19.
На рис. 19 показано машинное представление двух двоичных чисел: 0,10110110110 и -0,00110110011. Такое машинное изображение чисел называется прямым кодом. Дадим формальное определение. пряным кодом двоичного числа X =(+/-)0, х, х... х
называется его представление в виде:
0, х[1] x[2]... x[n-1] х[n]. если х ≥0;
[X]
1, x[l] х[2]... x[n-l] х[n], если х < 0.
Например: [0.10110] = 0,10110; [-0, 10101] = 1,10101.
На рис. 20 показано, каким образом при использовании прямых кодов диапазон двоичных чисел -1,0 < х <!0.0 отображается на отрезок числовой оси 1 ≤ x < 10 (вдвоичной системе). Из рисунка видно, что меньшему отрицательному числу соответствует большее значение пряного кода.
Рис. 20
Сложность выполнения операции вычитания над числами, представленными в прямом коде, вызывает необходимость применения способов кодирования отрицательных чисел, позволяющих свести вычитание к операции сложения. сначала определим
0, х[1] x[2]... x[n-1] х[n], если X ≥0;
[X]ok=
1, х[1] x[2]... x[n-1] х[n], если X <0.
где
0, если x[i] =1
x[i] =
1, если x[i]=0
Дополнительный код (ДК) отрицательного числа X получается прибавлением к этому числу основания системы счисления N=10, записанному в двоичной системе, т.е.
0, х[1] x[2]... x[n], если X ≥0;
[X]дk=
10-0, х[1] x[2]... х[n], е сли X <0.
Например:
[-0,10110]дк = 10,0 – 0,101110 = 1,01010.
На рис. 21 показано, каким образом при использовании дополнительного кода диапазон чисел – 1,0 <X≤ 0,0 отображается на область положительных чисел. Из рисунка видно, что большим значениям отрицательного числа соответствует большее значение дополнительного кода.
Рис.21
Можно показать, что для построения дополнительного кода
отрицательного двоичного числа необходимо инвертировать цифры
значащей части кода, а к младшему разряду прибавить единицу.
Например, [1, 11001пк]дк = [1,11001пк]ок + 0,00001=
= 1,00110 + 0,00001 = 1,00111.
Для осуществления обратного перехода от дополнительного кода к прямому необходимо вычесть единицу младшего разряда отрицательного числа в дополнительном коде, а затем инвертировать цифры значащей части.
Это эквивалентно инвертированию значащих разрядов, стоящих между запятой и самой младшей единицей в значащей части кода. Например, [1,00111дк]пк = 1,11001.
Понятий обратного и дополнительного кодов действительны для естественных систем с любым основанием N. Например, для десятичной системы счисления понятие дополнительного кода можно пояснить на следующем примере. Пусть имеется трёхразрядный десятичный счётчик
Способный считать в прямом и обратном порядке. Если счетчик первоначально находится в состоянии 000 и на вход обратного счета подать, например, 17 импульсов, то счётчик будет последовательно проходить состояния 999, 998, 997,..., 983. Последнее состояние, а именно 983, и есть дополнительный код числа 17.
Представление чисел в форме с плавающей запятой
Полулогарифмическая форма, или форма с плавающей запятой, служит для расширения диапазона чисел, представимых в машине. число X представляется в виде пары X = < М,Р >, где М - мантисса,
Р - порядок числа, причем значение числа X определяется формулой
(Х)= M * Nр, где N - основание системы счисления, в которой записаны
M и P. Если 1 > |M| ≥ N-1, то форма <M,P> называется нормализованной. Формат машинного изображения <M,Р> содержит поля мантиссы
и порядка с отдельными знаковыми разрядами (Рис.22). Мы будем записывать машинное изображение числа с плавающей запятой в виде
[X]пз = [M] * N[p] ,
где [M] – машинное изображение мантиссы,
[P] – машинное изображение порядка,
N – десятичный эквивалент основания системы счисления.
ß---------------[M]--------------à ß-------------[P]--------------à
----------------------------------------------------------------------------
----------1-------------------------m----------1-----------------------p-
знак мантиссы M знак порядка P
рис. 22
Длинна машинного изображения [M] мантисс равна m+1, где m – число значащих разрядов мантиссы, а длина машинного изображения [P] порядка равна p+1. Следовательно, все машинное изображение числа Х в форме с плавающей запятой имеет длину m+p+2.
Например, двоичное число –110,01 имеет машинное изображение в форме с плавающей запятой [-110,01]пз = 1,110010 10011, если для мантиссы отведено m=6 разрядов, а для порядка p=4 разряда.
Наибольшее число, которое можно записать в форме с плавающей запятой,
Xmax = (1 –N-m ) N np-1 .
Или приближённо
Xmax = Nnp-1 ,
А наименьшее
Xmin = N-np
Абсолютная погрешность представления числа в форме <M,P> равна
Eабс = N-m*Np/2,
А относительная
Eотн = Eабс / |X| = N-m*Np / (2M*Np) = N-m / (2M).
Поскольку 1>|M| ≥ N-1 , имеем Еотн ≤ N-m+1 /2, т.е. относительная погрешность зависит от величины числа X.
Пример. Для записи чисел с фиксированной запятой используется регистр, содержащий 12 двоичных разрядов. Определить максимальное (Nmin) числа, которые могут быть записаны в регистр, если считать, что в первом случае запятая фиксирована после младшего разряда (число целое), а во втором перед старшим (число меньше единицы).
Решение.
1. Максимальное целое число Nmax = 111 111 111 111.
Для простоты расчётов добавим к нему и затем вычтем 1, тогда
Nmax = 1 000 000 000 000 –1 = 212 –1 = 4095
2. Минимальное число
Nmin = 0,000 000 000 001 = 2-12 = 1/4096 = 0,0002441
Примечание. Запятая и путь перед ней в регистр не записываются, но подразумевается, что они есть.
Пример. Для записи чисел с плавающей запятой используется регистр, содержащий 12 двоичных разрядов, причём для записи нормализованой мантиссы (вместе со знаком) отведено 7 двоичных разрядов, для записи порядка (вместе со знаком) – 5 двоичных разрядов. Определить максимальное (Xmax) и минимальное (Xmin) по абсолютной величине числа, которые могут быть записаны в регистр.
Решение.
1. Xmax = 0,111 111 * 21111
Для простоты расчётов добавим к мантиссе число 0,000 001 и затем его вычтем, тогда
Xmax = (1-2-6) * 215 = 215 - 29 = 32768 – 512 = 32256
2. Xmin = 0.100 000 *2-1111 =2-1 *2-15 = 2-16 = 1/65536 = 0,0000152
Примечание. Нетрудно убедиться, что использование вышеприведенных в тексте лекций формул для вычисления Xmax и Xmin даёт те же результаты.
Дата добавления: 2015-10-23; просмотров: 146 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ПРЕДСТАВЛение СИМВОЛЬНОЙ ИНФОРМАЦИИ | | | Выполнение арифметических и логических операций |