1 Математические основы работы ЭВМ. Математические основы работы эвм системы счисления
Скачать 26.78 Kb.
|
3) =1,5. (5.8)2) = 0,75. (5.7)3) + 2> +1) = 1,3750.{п (п 1 + А322 + А32-3 + ... + А„_ 2'2_(”“2) + Л- Г24”- !) +1 + 42""2 + ... + Ап _ 22 + А„ _ j, а в остатке число Ап.Глава 5 МАТЕМАТИЧЕСКИЕ ОСНОВЫ РАБОТЫ ЭВМ 5.1. Системы счисления Человек (по классификации живых существ Гомо Сапиенс — Человек Разумный) мыслит и обменивается мыслями с себе подобными. Обмен этот осуществляется в основном с помощью звуков — речи, состоящей из отдельных слов. Для сохранения мыслей, выраженных словами, служит письмо, т.е. запись речи определенными значкам. Наибольшее распространение получила буквенная запись, когда для обозначения каждого из звуков, составляющих слово, служит определенный знак. Для обозначения количественных соотношений между объектами, ситуациями, процессами используются числа, которые также могут быть выражены словами. Но для записи чисел используется более экономный способ, чем буквенная запись слов. Числа могут быть записаны с помощью специальных знаков — цифр. Современное написание цифр десятичной системы счисления пришло к нам из Индии через арабов. Само слово «цифра» происходит от арабского слова «сифр». В XIII в. этими цифрами стали пользоваться в Италии благодаря флорентийским купцам, торговавшим с арабскими. Использование так называемых арабских цифр стало повсеместным в XV в. При создании ЭВМ надежнее пользоваться схемами, которые могут быть только в двух устойчивых положениях. Например, электромагнитное реле может иметь замкнутый или разомкнутый контакт, определенный участок магнитной ленты может быть намагничен или размагничен и т.д. Поэтому, как уже отмечалось в гл. 4, большинство ЭВМ оперирует числами, записанными при помощи только двух цифр: 0 и 1. Как же представить любое число при помощи только двух цифр? Для этого необходимо использовать двоичную систему счисления. Счислением называется совокупность приемов наименования и обозначения чисел. Существуют различные системы счисления. Прежде всего они различаются по количеству используемых зна ков, т.е. цифр. При записи чисел в десятичной системе счисления пользуются десятью цифрами: 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Десятичная система является позиционной, поскольку значение каждой цифры в числе зависит от ее положения (позиции) среди других цифр этого числа. Например, в числе 2724,25 имеются три цифры 2. Все они имеют разные значения. Левая цифра указывает значение тысяч (2 тысячи), средняя — значение десятков (2 десятка), а правая (справа от запятой) — значение десятых долей (2 десятых доли). Указанное число является сокращенной записью следующей суммы: 2724,25 = 2 • 103 + 7 • 102 + 2 • 101 + 4 • 10°+ 2 • НИ + 5 • 1(Н. В числе имеется шесть позиций, т. е. шесть разрядов. Единица каждого разряда равна десяти единицам предыдущего разряда. Вдвоичной системе счисления единица каждого разряда равна двум единицам предыдущего разряда. Слева от разряда единиц расположены разряды двоек, четверок, восьмерок и т.д. Чтобы записать число в двоичной системе, нужно представить его в виде суммы последовательных степеней числа 2, умноженных на 0 или 1: 2724,25 = 1 • 211 + 0 • 210 + 1 • 29 + 0 • 28 + 1 • 27 + 0 • 26 + 1 • 25 + 0 • 24 + + 0 • 23 + 1 • 22 + 0 • 21 + 0 • 2° + 0 • 2-1 + 1 • 2 Получившиеся частное и остаток должны соответственно равняться частному и остатку от деления правой части равенства (5.1) на 2, поэтому 4 = 1; 42"-1 +42"-2 + ... +4_22 + 4_, = 86. (5.2) Разделим теперь на 2 обе части равенства (5.2) и приравняем получившиеся частные и остатки. В результате будем иметь 4-1 = 0; 42" -2 + 42" -3 + ... + 4 - з2 + 4 - 2 = 43. (5.3) Разделим еще раз на 2 обе части равенства (5.3) и, сравнив частные и остатки, получим 4 - 2 = 1; 42"-3 + 42"-4 +... +4-42 + 4-з = 21. Аналогичным образом найдем значения остальных цифр 4- в результате получим: 4 = 1; 4 = 0; 4 = 1; 4 = 0; 4 = 1; 4 = 1; 4 = о и 4 = 1- Следовательно, 173 = Aq27 + А{2Ь + ... + A^l + А7 = 1 • 27 + 0 • 26 + 1 • 25 + 0 • 24 + 1 • 23 +1 • 22 + 0 • 21 + 1 • 2°, т. е. (173)10 = (10101101)2. Таким образом, нахождение двоичных цифр числа сводится к делению соответствующих частных на 2 и нахождению остатков от деления. Поэтому, чтобы не выписывать каждый раз все новые и новые равенства, удобно пользоваться такой записью: 173 172 1 86 L2— 8$. _43 О 42 _2112 Т 20 10Т2_ 1 "10 _5 0 _4 1 2l2_ 2 1 0 Выделенные полужирным шрифтом цифры есть остатки, которые и являются цифрами при записи числа 173 в двоичной системе. Итоговый результат читается справа налево. Можно пользоваться более простой формой записи: 173 86 43 21 10 5 2 1 1 01 1010' Над чертой записывают заданное число и получающиеся частные, под чертой — остатки от деления соответствующих частных на 2. В двоичной системе счисления могут быть записаны не только целые, но и дробные числа. При переводе дробного числа из десятичной системы в двоичную можно порознь перевести целую (как показано выше) и дробную части. Дробная часть десятичного числа в двоичной системе представляется как сумма отрицательных степеней числа 2, умноженных на 1 или 0. Рассмотрим, как осуществляется перевод дробных чисел из десятичной системы в двоичную. Пусть, например, число (0,6875)ю требуется записать в двоичной системе. Для этого нужно найти такие цифры Аи А2, ..., А„, равные 0 или 1, чтобы Ах2 |
+ А„2
(5.5)
В левой части равенства (5.5) цифра А, есть целая часть числа в правой части (т.е. 1), а подчеркнутая сумма составляет дробную часть, поэтому Ах = 1,
Л22-> + А3 2
+ А„ 2-<«-= 0,375. (5.6)
Теперь умножим на 2 обе части равенства (5.6):
А2 + А32-> + ... + А„ _ 22
+ А„2
Отсюда А2 = 0, а подчеркнутая часть равна 0,75.
Умножим на 2 обе части равенства (5.7):
А3 + 4,2-! + ... + А„ 2
Первое слагаемое | Второе слагаемое | |||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 |
2 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 |
3 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 |
4 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 |
5 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 |
6 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 |
7 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
Сомножители | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
ницу. Если в младшем разряде уже стоит единица, то при этом приходится изменять цифру в следующем, а, возможно, и в более старших разрядах.
Например, при вычитании из числа ЮНО числа 01101 уменьшаемое представляют как положительное число в прямом коде 010110, а вычитаемое — как отрицательное число, прямой код которого 101101 (полужирным шрифтом выделены цифры знакового разряда). Определяют дополнительный код вычитаемого. Сначала инвертируют цифры всех разрядов, кроме знакового (результат 110010), затем прибавляют единицу в младший разряд (110011). Выполняют операцию сложения уменьшаемого (в прямом коде) с вычитаемым (в дополнительном коде):
010110
+
110011
001001.
Число 01001 и есть результат вычитания, полученный в прямом коде. При сложении цифры знаковых разрядов складывают с отбрасыванием возникающего из этого разряда переноса. В данном примере в результате вычитания получилось положительное число, поскольку в знаковом разряде стоит 0. Это естественно, так как уменьшаемое больше вычитаемого. Если же из меньшего числа вычитать большее, то получается отрицательное число.
Убедимся в этом на примере, из числа 01101 (в прямом коде 001101) вычтем 10110. Для этого определим дополнительный код отрицательного числа 110110: сначала инвертируем цифры всех разрядов, кроме знакового (101001), потом добавим единицу в младший разряд (101010). Выполним сложение уменьшаемого в прямом коде и вычитаемого в дополнительном коде:
001101
+
101010
110111.
Результат есть отрицательное число (1 в знаковом разряде) и выражен он в дополнительном коде. Для получения его прямого кода убавим единицу в младшем разряде (110110), после чего инвертируем цифры всех разрядов, кроме знакового (101001).
Правильность вычислений проверим на десятичных числах: (10110)2 = (22) 10; (01101)2 = (13)10; (01001)2 = (9)10; 22 - 13 = 9; 13 - - 22 = -9.
При умножении двоичных многоразрядных чисел с учетом их знаков необходимо выполнить две операции: определить знак произведения и найти его абсолютную величину. Знаковый разряд может быть получен суммированием цифр знаковых разрядов сомножителей без формирования разряда переноса. При несовпаде
нии складываемых цифр получается 1, что соответствует знаку произведения двух сомножителей с разными знаками. Абсолютная величина произведения определяется перемножением чисел без учета их знаков. Перемножение многоразрядных двоичных чисел производится с помощью табл. 5.2.
При умножении двух двоичных чисел множимое (первый сомножитель) последовательно умножают на каждую цифру множителя (второго сомножителя), начиная либо с младшего, либо со старшего разряда, и для учета веса соответствующей цифры множителя сдвигают либо влево (при начале умножения с младшего разряда множителя), либо вправо (при начале со старшего разряда) на такое число разрядов, на какое соответствующий разряд множителя сдвинут относительно младшего или старшего разряда.
При умножении вручную на бумаге мы привыкли начинать с младшей цифры второго сомножителя. При этом результат умножения на цифру следующего разряда записываем левее предыдущего результата на один разряд, т.е. тем самым производим сдвиг влево. Результаты умножения первого сомножителя на каждую цифру второго сомножителя называют частичными произведениями или промежуточными суммами. Получающиеся в результате умножения и сдвига частичные произведения после суммирования дают полное произведение. Особенность умножения двоичных чисел состоит в том, что частичное произведение может быть либо сдвинутым на соответствующее число разрядов множимым, если соответствующая цифра множителя равна 1, либо нулем, если соответствующая цифра множителя равна 0.
Рассмотрим пример:
10111
х
1101
10111
00000
10111
10111
100101011
множимое
множитель
первое частичное произведение
второе частичное произведение
третье частичное произведение
четвертое частичное произведение
произведение
Тот же результат можно получить при умножении, начиная со старших разрядов множителя:
10111
х
1101
10111
10111
00000
10111
100101011.
В цифровых устройствах процессу суммирования частичных произведений придают последовательный характер: формируется одно из частичных произведений, к нему с соответствующим сдвигом прибавляется следующее частичное произведение, к полученной сумме с соответствующим сдвигом прибавляется очередное частичное произведение и так далее, пока не окажутся просуммированными все частичные произведения и не будет получено полное произведение.
Можно привести следующее обоснование тому, что умножение сводится к сдвигу и сложению. Пусть надо перемножить 101101 и 101101.
Запишем это в такой форме: 101101 • 101101 = 101101(100000 + + 1000 + 100 + 1) = 10110100000 + 101101000 + 10110100 + 101101.
Таким образом, умножение на 100000 свелось к приписыванию пяти нулей (т.е. сдвигу на пять разрядов влево), на 1000 — трех (сдвиг на три разряда), на 100 — двух (сдвиг на два разряда). Иными словами, из первого сомножителя формируется столько частичных слагаемых, сколько единиц имеется во втором сомножителе. Сдвиг производится на столько разрядов влево, на каком месте (в каком разряде) находится соответствующая единица, минус один. Например, если единица есть в шестом разряде, сдвиг производится на пять разрядов, а если в четвертом, то на три. Если единица в первом разряде, то никакого сдвига делать не надо, в качестве одного из слагаемых берется сам первый сомножитель. Затем все полученные частные слагаемые складываются.
Операция деления в ЭВМ может быть сведена к нескольким операциям вычитаний и сдвигов. Результат деления (частное) определяется как число вычитаний с учетом сдвигов. Например, деление 132 : 11 = 12 можно осуществить в виде такой последовательности вычитаний и сдвигов:
_ 132
110 — первое вычитание
022
220 — сдвиг
110 — первое вычитание
_110
110 — второе вычитание
000
Ответ: 12 (одно вычитание до сдвига и два после).
Замена вычитания сложением остатка с дополнительным кодом вычитаемого сводит операцию деления к последовательности трех простейших операций.
Деление является весьма трудоемкой операцией. В ряде случаев в цифровых устройствах оно заменяется нахождением обратной величины делителя по специальной подпрограмме (на основе какой-либо быстро сходящейся итерационной формулы) и последующим умножением делимого на найденную обратную величину.
Иными словами, во многих машинах операция деления заменяется умножением, так как а/Ъ = а(1/Ь). По числу b машина автоматически вычисляет число 1 /Ь, которое затем умножается на а.
Довольно часто результат деления вычисляется не вполне точно, т.е. с некоторым приближением. Ведь деление без остатка не всегда возможно. В привычной нам десятичной системе это тоже часто бывает. Например, если разделить 2 на 3, то в ответе получится 0,666..., т.е. 6 в периоде. На практике принимают результат с округлением: 0,67, или 0,667, или 0,6667. Чем больше знаков после запятой, тем меньше ошибка вычисления.
5.4. Способы представления чисел в разрядной сетке ЭВМ
Вычислительные машины оперируют с числами, количество разрядов которых ограничено, поскольку электрическое устройство, предназначенное для хранения двоичного числа, имеет определенное число разрядов.
При выполнении операции сложения двоичных чисел возможно переполнение разрядной сетки, которое проявляется в том, что результат операции (получившаяся сумма) требует большего количества разрядов, чем имеется в устройстве для его хранения. Для выявления переполнения разрядной сетки используется модифицированный код. К двоичному числу добавляются два знаковых разряда, причем в обоих разрядах положительные числа содержат нули, а отрицательные числа — единицы. Выполнение операций суммирования с использованием модифицированного дополнительного кода производится по обычным приведенным выше правилам. Если результат суммирования содержит в знаковых разрядах комбинации 01 или 10 (т.е. разные цифры), то это служит признаком переполнения разрядной сетки.
Насмотрим пример сложения чисел:
+
00 11011 — первое слагаемое в прямом модифицированном
коде
11 01011 — второе слагаемое в дополнительном модифицированном коде
00 00110 — сумма в прямом модифицированном коде
Переполнение разрядной сетки в данном случае не возникает (в знаковых разрядах комбинация 00). Перенос из старшего знакового разряда при сложении отбрасывается.