Автор работы: Пользователь скрыл имя, 15 Сентября 2013 в 10:47, методичка
Системы счисления делятся на непозиционные и позиционные. В непозиционных системах количественное значение символа определяется только его изображением и не зависит от его места (позиции) в числе. Например, римские цифры. Числа обозначались: 1 – I, 2 – II, 3 – III, 4 – IIII, 5 – V, 10 – X. Для более крупных чисел применялись обозначения L – 50; C – 100; D – 500; M – 1000. Позже стали применять обозначения 4 – IV; 9 – IX; 40 – XL; 90 – XC, и т.д. Числа обозначались посредством суммирования знаков в записи числа. Например, число 37 обозначалось в виде ХХХVII = 10+10+10+5+2. Этим способом можно записать любое число. Например, число 99 изображается XCIX.
где мантисса числа A; q – основание системы счисления; порядок числа A, причем мантисса должна отвечать условию:
Ограничение справа требует, чтобы мантисса представлялась правильной дробью, ограничение слева – чтобы после запятой присутствовала значащая цифра (не 0). Так, число 125,25 представляется в нормальной форме как 0,12525×10 3.
Значения вещественных типов позволяют определить произвольное число лишь с некоторой точностью, зависящей от внутреннего формата вещественного числа. В таблице представления вещественных типов указано количество знаков в мантиссе, что определяет точность представления числа, и диапазон десятичного порядка, который определяет диапазон чисел, охватываемых данным типом.
Длина в байтах |
Название типа в языке Паскаль |
Мантисса, значащие цифры |
Диапазон десятичного порядка |
4 |
single |
7…8 |
–45…+38 |
6 |
real |
11…12 |
–39…+38 |
8 |
double |
15…16 |
–324…+308 |
10 |
extended |
19…20 |
–4951…+4932 |
Для представления чисел в нормальной форме используются фиксированные форматы разной длины. Например, для типа длиной в 4 байта в разрядной сетке форматов отводятся места для знака мантиссы (нулевой разряд), знака порядка (первый разряд), значения порядка (6 разрядов, со 2-го по 7-ой), в остальные разряды записывается мантисса числа. В других форматах первый байт не изменяется, а увеличивается область под мантиссу. На рисунке представлена разрядная сетка в формате 4 байта.
Знак |
Знак |
||||||||||
mA |
PA |
PA |
mA |
||||||||
0 |
1 |
2 |
. . |
7 |
8 |
9 |
… |
30 |
31 |
Формат числа в нормальной форме
Диапазон представления чисел можно оценить по максимальному значению: , где
При двоичном представлении числа:
Представление нормальной формы в ЭВМ имеет следующие особенности:
Теперь характеристика может принимать значения в диапазоне =7F16 и под ее значение отводятся 7 разрядов (27 -1 =127). Очевидно, если Рх= 4016, то РА = 0, если Рх< 4016, то порядок отрицательный (РА < 0), при Рх > 4016 - порядок положительный (РА > 0). Если Рх < 0 или Рх > 7F16, то значение характеристики пропадает, и результаты искажаются.
Действительно, если в формулу подставить q = 16, то Таким образом значение порядка увеличилось в 4 раза.
Представим в разрядной сетке формата в 4 байта два числа: А10 = 41006,5 = А16 = А02Е,8 и В10 = –41006,5 = В16 = –А02Е,8. Для этого найдем нормализованные мантиссы и характеристики: mA = 0, А02Е8, Рх A = 40 + 4 = 44; mB = –0,А02Е8, Рх B = = 40 + 4 = 44.
0 |
100 |
0100 |
1010 |
0000 |
0010 |
1110 |
1000 |
0000 |
A16=44А02Е80>0 |
1 |
100 |
0100 |
1010 |
0000 |
0010 |
1110 |
1000 |
0000 |
B16=C4А02Е80<0 |
0 |
1 |
31 |
Представление чисел в формате в 4 байта.
Знак числа определяется по первой шестнадцатеричной цифре кода числа.
Машинные коды чисел и действия над ними. В ЭВМ используются специальные машинные коды чисел. Благодаря такому представлению чисел все арифметические операции над числами сводятся к операциям арифметического сложения и сдвигу их кодов вправо или влево. При этом учитываются знаки чисел, автоматически определяется знак результата и признаки возможного переполнения разрядной сетки заданных форматов. В ЭВМ применяются прямой, обратный и дополнительный коды. Замена операции вычитания на сложение может осуществляться с помощью обратного и дополнительного кодов. Сущность их заключается в том, что вычитаемое B, как отрицательное число, представляется в виде дополнения до некоторой константы K, при которой выполняется условие Обратный и дополнительный коды отличаются выбором значения константы K.
Пусть K = . Следовательно, операцию C = A – B, где A и B – целые положительные числа в любой системе счисления, можно представить в виде:
где 10 – основание любой системы счисления;
– константа образования дополнительного кода;
– константа образования обратного кода.
n – количество разрядов представления целых чисел в выбранной системе счисления; для дробных чисел n = 0.
Из выражения следует, что из полученной суммы нужно исключить добавленную константу.
Пример 1. Пусть A = 46, B = 38. Найти C = A – B.
Константа для дополнительного кода для обратного кода Тогда , .
Из примера следует, что операция вычитания заменяется операцией сложения с дополнениями. Из полученной суммы константа дополнительного кода компенсируется просто ликвидацией единицы переноса из старшего разряда суммы. Константа обратного кода компенсируется путем исключения единицы переноса из старшего разряда суммы и добавления ее к младшему разряду суммы, т.е. требуется дополнительная операция сложения. Поэтому в ЭВМ для выполнения действий используется дополнительный код, а обратный для образования дополнительного кода.
По результатам действий над числами с дополнениями легко определить знак суммы и наличие переполнения разрядной сетки. Переполнение разрядной сетки происходит, если сумма равна или больше по модулю константы образования дополнительного кода.
Пример 2. Пусть A = 46, B = 38. Найти С1 = В – А, С2 = А + В, С3 = –А – В.
Определим (–А)ДОП = 102 – 46 = 54: (–В)ДОП = 102 – 38 = 62.
Из примеров 1 и 2 следует, что при сложении чисел с разными знаками (С и С1), наличие единицы переноса из старшего разряда является признаком положительного результата (С), отсутствие переноса (С1) - признаком отрицательного результата, при этом константа образования дополнительного кода не скомпенсирована и осталась в сумме.
При сложении чисел с одинаковыми знаками признаки противоположны: отсутствие переноса единицы из старшего разряда при положительных слагаемых (С2) является признаком положительного результата, наличие переноса при отрицательных слагаемых (С3) – признаком отрицательного, при этом одна константа компенсируется переносом, а вторая сохраняется в сумме. Эти же признаки в суммах (С2 и С3) указывают на отсутствие переполнения разрядной сетки для записи результатов (результаты имеют два десятичных разряда).
Пример 3. Пусть A = 61, B = 72. Найти С4 = А + В, С5 = –А – В.
Определим (–А) ДОП = 102 - 61 = 39: (–В) ДОП= 102 – 72 = 28.
Здесь в обоих случаях при сложении чисел с одинаковыми знаками происходит переполнение разрядной сетки, признаками которого являются: наличие переноса из старшего разряда при положительных слагаемых (С4) и отсутствие переноса при отрицательных (С5). При получении суммы С5 перенос отсутствует, т.е. обе константы 100 остались в полученном результате. Следовательно, результат 67-100 = -33, -33 - 100 = - 133 по модулю больше константы и в отведенные два разряда не умещается.
Рассмотрим образование кодов в двоичной системе счисления на примере А=±27. Знак числа, как было указано выше, кодируется 0 или 1, записывается перед старшим разрядом и отделяется для наглядности точкой, которая не является частью кода и в разрядной сетке не отражается. Для простоты примем, что задана разрядная сетка в один байт, т.е. 8 двоичных разрядов, из которых один отводится под знак, а 7 для записи числа.
А10 = ± 27 = А16 = ± 1B = А2 = ±11011.
Примем константу для дополнительного кода: К10 = 28 = К2 = 101000 = 100000000 и константу для обратного кода: К10 = 28 - 1 = К2 = 101000 - 1 = 11111111.
В таблице приведены прямой, обратный и дополнительные коды для чисел 27 и -27.
Число |
[A]ПК |
[A]ОК |
[A]ДК |
11011 |
0.0011011 |
0.0011011 |
0.0011011 |
11111111 |
100000000 | ||
00011011 |
00011011 | ||
- 11011 |
1.0011011 |
1.1100100 |
1.1100101 |
Приведем правила образования машинных кодов:
Определение прямого кода отрицательного числа по его обратному и дополнительному коду производится по тем же правилам.
Числа, представленные в естественной форме, в памяти ЭВМ представлены в дополнительном коде, числа в нормальной форме хранятся в прямом коде. Действия в ЭВМ выполняются в прямом и дополнительном коде, обратный код используется для получения дополнительного кода.
Действия над числами, представленными в естественной форме. При сложении кодов чисел в естественной форме следует учитывать следующие положения:
Очевидно, что если переносы согласуются, т.е. оба отсутствуют или оба присутствуют, то переполнение разрядной сетки не происходит.
Пример 4. Дано: А = 267, В = 186. Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате.
Решение.
А10 = 267 = А16 = 10B = A2 = 100001011