Задача на одномерные массивы

Автор работы: Пользователь скрыл имя, 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.

Вложенные файлы: 1 файл

Задача на модномерные ассивы.doc

— 1.26 Мб (Скачать файл)

,

где мантисса числа 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


 

Формат числа в нормальной форме

 

Диапазон представления  чисел  можно оценить по максимальному  значению: ,  где

При  двоичном представлении  числа:

Представление нормальной формы в ЭВМ имеет следующие особенности:

  1. В нормальных форматах 7 разрядов отводится под значение порядка и его знак. Следовательно, числовая ось порядков находится в диапазоне или . Для облегчения действий над порядками делается смещение числовой оси порядков в область положительных значений, где не требуется учитывать знаки порядков. Это смещение равно +26 = 64 = 4016. Смещенный порядок называется характеристикой и обозначается Рх. Характеристика числа не имеет знака и определяется: .

Теперь характеристика может принимать значения в диапазоне  =7F16 и под ее значение отводятся 7 разрядов (27 -1 =127). Очевидно, если Рх= 4016, то РА = 0, если Рх< 4016, то порядок отрицательный (РА < 0), при Рх > 4016 - порядок положительный (РА > 0). Если Рх < 0 или Рх > 7F16, то значение характеристики пропадает, и результаты искажаются.

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

Действительно, если в  формулу подставить 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


 

Приведем правила образования  машинных кодов:

  1. Прямой код положительного и отрицательного чисел отличаются только знаковыми разрядами, модуль числа не изменяется.
  2. Положительное число в прямом, обратном и дополнительном кодах имеет одинаковое изображение.
  3. Обратный код отрицательного двоичного числа образуется из прямого кода положительного числа путем замены всех единиц на нули, а нулей на единицы, включая знаковый разряд.
  4. Дополнительный код отрицательного числа образуется путем добавления единицы к младшему разряду обратного кода этого же числа или заменой в коде положительного числа всех нулей на единицы, а единиц на нули, исключая последнюю единицу и следующие за ней нули.

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

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

Действия  над числами, представленными в  естественной форме. При сложении кодов чисел в естественной форме следует учитывать следующие положения:

  1. числа хранятся в дополнительном коде;
  2. в сумматоре числа складываются вместе со знаками, при этом образуется знак результата;
  3. при сложении чисел с разными знаками единица переноса из знакового разряда стирается, т.е. компенсируется одна константа образования дополнительного кода;
  4. признаками переполнения разрядной сетки при сложении кодов чисел с одинаковыми знаками могут служить:
    1. знак суммы не соответствует знакам слагаемых;
    1. переносы из старшего разряда суммы в знаковый и из знакового не согласуются, т.е. один из них присутствует, а другой отсутствует.

Очевидно, что если переносы согласуются, т.е. оба отсутствуют  или оба присутствуют, то переполнение разрядной сетки не происходит.

 

Пример 4. Дано: А = 267,  В = 186.  Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате.

Решение.

  1. представим исходные числа в двоичной системе счисления:

                 А10 = 267 = А16 = 10B = A2 = 100001011

Информация о работе Задача на одномерные массивы