Лекция 5
Как производятся арифметические операции в позиционных системах счисления?
Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.
С л о ж е н и е
Таблицы сложения легко составить, используя Правило Счета.
Сложение в двоичной системе
Сложение в восьмеричной системе
Сложение в шестнадцатеричной системе
При сложении цифры суммируются по разрядам, и если при этом возникает избыток, то он переносится влево
Пример 1. Сложим числа 15 и 6 в различных системах счисления.
Шестнадцатеричная: F16+616
Ответ: 15+6 = 2110 = 101012 = 258 = 1516.
Проверка. Преобразуем полученные суммы к десятичному виду:
101012 = 24 + 22 + 20 = 16+4+1=21,
258 = 2 . 81 + 5 . 80 = 16 + 5 = 21,
1516 = 1 . 161 + 5 . 160 = 16+5 = 21.
В ы ч и т а н и е
Пример 4. Вычтем единицу из чисел 102, 108 и 1016
Пример 5. Вычтем единицу из чисел 1002, 1008 и 10016.
У м н о ж е н и е
Выполняя умножение многозначных чисел в различных позиционных системах счисления, можно использовать обычный алгоритм перемножения чисел в столбик, но при этом результаты перемножения и сложения однозначных чисел необходимо заимствовать из соответствующих рассматриваемой системе таблиц умножения и сложения.
Умножение в двоичной системе
Умножение в восьмеричной системе
Ввиду чрезвычайной простоты таблицы умножения в двоичной системе, умножение сводится лишь к сдвигам множимого и сложениям.
Пример 7. Перемножим числа 5 и 6.
Ответ: 5 . 6 = 3010 = 111102 = 368.
Проверка. Преобразуем полученные произведения к десятичному виду:
111102 = 24 + 23 + 22 + 21 = 30;
368 = 381 + 680 = 30.
Пример 8. Перемножим числа 115 и 51.
Ответ: 115 . 51 = 586510 = 10110111010012 = 133518.
Проверка. Преобразуем полученные произведения к десятичному виду:
10110111010012 = 212 + 210 + 29 + 27 + 26 + 25 + 23 + 20 = 5865;
133518 = 1 . 84 + 3 . 83 + 3 . 82 + 5 . 81 + 1 . 80 = 5865.
Д е л е н и е
Деление в любой позиционной системе счисления производится по тем же правилам, как и деление углом в десятичной системе. В двоичной системе деление выполняется особенно просто, ведь очередная цифра частного может быть только нулем или единицей.
Пример 9. Разделим число 30 на число 6.
Ответ: 30 : 6 = 510 = 1012
Пример 10. Разделим число 5865 на число 115.
Сложение и вычитание в АЛУ
В большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.
Обратный код отрицательного числа получается инверсией двоичных разрядов.
Обратный и дополнительный код положительного числа совпадает с самим числом.
Для того чтобы получить дополнительный код отрицательного числа, необходимо все его цифры инвертировать (в знаковом разряде оставить единицу, во всех значащих разрядах нули заменить единицами, а единицы нулями) и затем к младшему разряду прибавить единицу. В случае возникновения переноса из первого после запятой разряда в знаковый разряд, к числу следует прибавить единицу в младший разряд.
Для получения внутреннего представления целого отрицательного числа N, хранящегося в k разрядном машинном слове:
1. Получить внутреннее представление положительного числа N (Перевести число N в двоичную систему счисления, полученный результат дополнить слева незначащими нулями до k разрядов)
2. Получить обратный код этого числа заменой 0 на 1 и 1 на 0, т.е значения всех бит инвертировать (значение знакового разряда не изменяется)
3. К полученному числу прибавить 1.
Данная форма называется дополнительным кодом
Для перевода дополнительного кода в десятичное число.
1. Инвертировать дополнительный код
2. Прибавить к полученному коду 1 и получить модуль отрицательного числа:
3. Перевести в десятичное число и приписать знак отрицательного числа.
Пример:
Записать дополнительный код отрицательного числа –2002 для 16-ти разрядного компьютерного представления.
Прямой код –200210 00000111110100102
Обратный код инвертирование 11111000001011012
прибавление единицы 11111000001011012
+ 00000000000000012
Дополнительный код 11111000001011102
Ответ: 11111000001011102
Пример:
Десятичные числа Прямой код Обратный код Дополнительный код
–10 0000000000001010 1111111111110101 1111111111110110
–100 0000000001100100 1111111110011011 1111111110011100
–1000 0000001111101000 1111110000010111 1111110000011000
–10000 0010011100010000 1101100011101111 1101100011110000
При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства.
Пример:
А и В положительные, сумма А+В больше, либо равна 2n-1, где n — количество разрядов формата чисел (для однобайтового формата n=8, 2n-1 = 27 = 128). Например:
Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.
Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:
• на преобразование отрицательного числа в обратный код компьютер затрачивает меньше времени, чем на преобразование в дополнительный код, так как последнее состоит из двух шагов — образования обратного кода и прибавления единицы к его младшему разряду;
• время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата.
Умножение и деление в АЛУ
Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат.
Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.
Для иллюстрации умножим 1100112 на 1011012.
Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.
Сложение
101110
+
Вычитание
101110
-
001011
001011
Результат
111001
Результат
100011
Умножение
101101x101
101101
000000
101101
Деление
101101/101
1
10
101
Результат
(произведение)
11100001
Результат
(частное)
1001
Сложение целых чисел
Последовательность шагов при этом следующая:
1. слагаемые размещаются в разрядных сетках в прямых кодах;
2. отрицательное слагаемое (или слагаемые) преобразуется в обратный или дополнительный код (в зависимости от того, в какой форме выполняет операции АЛУ);
3. слагаемые складываются по правилам сложения двоичных чисел. При этом знаковые разряды участвуют в вычислениях наряду с числовыми;
4. единица переноса из знакового разряда (если таковая возникнет) отбрасывается при сложении в дополнительном коде или прибавляется к младшему числовому разряду при сложении в обратном коде;
5. если результат положителен – он представлен в прямом коде и не требует никаких преобразований. Если результат отрицателен, то он представлен в обратном или дополнительном коде в зависимости от того, в каком коде происходило сложение. Результат в таком случае преобразуется в прямой код.
В ЭВМ часто используют модифицированные коды: для изображения знака числа используются 2 двоичных разряда, при этом знак "+" изображается комбинацией 00, а знак "-" -комбинацией 11. Тогда ситуация переполнения определяется при разных значениях битовых разрядов знака, а именно, если в знаковых разрядах получаются комбинации 01 или 10 - значит, произошло переполнение.
При сложении и вычитании исходные числа выравниваются и представляются в дополнительном модифицированном коде. Затем выполняется поразрядное сложение (включая знаковые разряды). Если в знаковых разрядах появляется третий разряд равный единице, то он не учитывается и исключается из значения. Значения 10 и 01 в знаковых разрядах являются признаком того, что в результате операции произошло переполнение и полученное значение не верное. В этом случае в исходных числах в старших разрядах добавляются нули и операция повторяется.
Пример сложения чисел в дополнительном модифицированном коде:
Пример сложения при переполнении разрядной сетки:
Умножение в двоичной системе счисления.
Операция умножения в двоичной системе выполняется довольно просто. Умножение заменяется на операции сдвига и сложения. Множимое записывается в столбик со сдвигом столько раз, сколько разрядов в множителе. В тех разрядах, где значение равно нулю соответствующая строка в столбике обнуляется. Затем все значения складываются.
Пример умножения чисел в двоичной системе счисления:
Деление в двоичной системе счисления.
Деление выполняется по тем же правилам что и в десятичной системе, но в двоичной системе действия выполняется особенно просто, так как очередная цифра частного может быть только нулем или единицей.
Пример деления чисел в двоичной системе счисления:
Вопросы к лекции 5 «Выполнение арифметических операций»
1. Зарисовать таблицы для вычисления сложения в 2-ой, 8-ой, 16-ой, 10-ой СС
(стр. 1).
2. Сложить числа 1510 и 610 в 10-ой, 2-ой, 16-ой СС, используя пример 1 на стр. 2.
3. Вычесть из 1010 110 ; из 102 12; из 1016 116 , используя пример 4 на стр. 2
4. Вычесть из 10010 110 ; 1002 12; 10016 116 , используя пример 5 на стр. 2
5. Зарисовать таблицы для вычисления умножения в 2-ой, 8-ой, 16-ой СС (стр. 3)
6. К каким операциям сводится выполнение умножения (стр. 3)
7. Перемножить числа 510 и 610 в 10-ой, 2-ой и 16-ой СС, используя пример на стр. 3.
8. По каким правилам производится деление в любой СС. (стр. 3)
9. Разделить число 3010 на число 610 в 10-ой, 2-ой СС, используя пример 9 на стр. 4.
10. Какие операции используются в компьютерах вместо вычитания? (стр. 4)
Что представляет собой дополнительный код положительного числа? (стр. 4)
11. Что представляет собой дополнительный код отрицательного числа? (стр. 4). Привести последовательность получения дополнительного кода отрицательного числа в к - разрядном машинном слове (стр. 4-5)
12. Привести пример получения дополнительного кода числа -200210 (стр. 5)
13. К каким операциям сводится операция умножения в АЛУ? (стр. 6)
Привести пример умножения 1100112 на 1011012. (стр. 6)
14. Привести последовательность шагов при выполнении сложения целых чисел
(стр. 7)
15. Понятие переполнения разрядной сетки формата числа (стр. 5)
16. Понятие модифицированного кода. Как определяется при этом переполнение (стр.7)
Лекция 5 «Выполнение арифметических операций»
Лекции по предмету «Информатика»