Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Рассмотрим на примерах следующие арифметические операции: сложение, вычитание, умножение. Для каждой операции в первом примере будет рассматриваться 10-ичная система счисления.
Операция «сложение»
Пример 1. Сложить число 658738110 с числом 546171610 (Рис. 9.4.1.).
Номер строки таблицы | Пояснения | Номер разряда | |||||||
Обозначение кода числа А | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 | |
Обозначение кода числа B | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
Код числа А | |||||||||
Код числа B | |||||||||
Поразрядные суммы цифр каждого слагаемого Si =(ai+bi) | |||||||||
Результат уменьшения поразрядных сумм Si>=p, которые равны или больше основания системы [(ai+bi)-p] | |||||||||
Первичный перенос из предыдущего разряда в последующий | |||||||||
Поразрядные суммы цифр с учётом первичного переноса | |||||||||
Результат уменьшения поразрядных сумм, полученных с учётом первичных переносов | |||||||||
Вторичный перенос из предыдущего разряда в последующий (при добавлении первичного переноса) | |||||||||
Результат операции «сложение» ri |
Рис. 9.4.1.
Операция «сложение» реализуется в несколько этапов.
1 этап. Определяются поразрядные суммы - суммируются цифры в каждом разряде: Si = ai+bi (строка 5).
2 этап. В тех разрядах, в которых поразрядная сумма Si оказывается не цифрой, а числом, т.е. Si=ai+bi >= p, цифра результата определяется вычитанием основания системы: ri=ai+bi – p (строка 6). Одновременно возникшая 1 переноса Пi «переходит» в последующий разряд i+1 (строка 7).
3 этап. Единицы переноса суммируются с поразрядными суммами Пi+Si+1 (строка 8).
4 этап. Этот этап аналогичен 2-му этапу. Если Пi+Si+1 >=p, то происходит вычитание основания системы: Пi+Si+1– p (строка 9). Одновременно возникшая 1 переноса Пi+1 «переходит» в последующий разряд i+2 (строка 10).
Мы привыкли к 10-ичной системе счисления и выполняем в ней операции, «не задумываясь». Удобство 10-ичной системы счисления состоит не только в том, что мы работаем в ней с детства. Если разрядная сумма больше или равна 1010, то в качестве цифры результата мы используем младшую цифру разрядной суммы, не проводя вычитание. Посмотрите на таблицу (Рис. 9.4.2.).
Цифра первого слагаемого | ai | |||||||||
Цифра второго слагаемого | bi | |||||||||
Первичная поразрядная сумма | Si=ai+ bi >=10 | 1 0 | 1 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 |
Цифра результата | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Рис. 9.4.2.
В первых двух строках значения цифр взяты для примера. Вместо, 7+5=12 можно рассматривать 8+4=9+3=6+6=12. Подчёркнутые цифры подтверждают вышеприведённое утверждение.
Операция «сложение» над кодами чисел в других системах счисления выполняется аналогичным образом. Однако есть особенность. Рассматривая нижеприведённые примеры, обратите внимание на эту особенность. В какой бы системе счисления (кроме десятичной) мы ни проводили операцию «сложение», суммирование мы проводим в десятичной системе счисления. Но сравнивать каждую поразрядную сумму мы должны с конкретным основанием системы счисления. Мы не можем в качестве цифры результата использовать младшую цифру суммы, а должны проводить вычитание, используя представление этого основания в десятичной системе счисления.
Чтобы выполнить любую операцию, необходимо представить процесс её выполнения в виде последовательности действий. Последовательность действий запишем на формальном языке PDL (Program Design Language) – языке проектирования программ. В дальнейшем мы будем более подробно рассматривать этот язык. Однако он достаточно простой, и запись действий на этом языке должна быть понятной, тем более, что к каждому оператору языка (действию) даётся комментарий.
Необходимо провести операцию «сложение» над двумя числами: A=anan-1an-2… a2a1a0 и B= bnbn-1bn-2… b2b1b0 в системе счисления с основанием р и получить сумму С= cn+1cncn-1cn-2… c2c1c0 (Рис. 9.4.3.).
Получите результаты представленных ниже примеров на операцию «сложение», читая и выполняя каждое действие в указанной таблице.
Номер оператора | Текст оператора | Комментарий |
Ввести значение n | Задать значение количества разрядов, которыми представлены 2 слагаемых. | |
П=0 | Установить начальное значение переноса из разряда в разряд | |
For i=0 to n | Оператор цикла, который устанавливает количество повторений тех действий (операторов), которые записаны между этим оператором и оператором Next. В данном случае переменная i обозначает текущее значение номера разряда от 0 до n (смотри коды чисел) | |
Si=ai+bi+П; | Определение разрядной суммы | |
If Si>=p Then | Условный оператор, когда выполняются различные действия в зависимости от результата проверки условия. Если разрядная сумма равна или больше р, то | |
ci=Si-p; П=1; | определяется разрядная сумма и переменной «Перенос» присваивается значение «1». | |
If i=n Then | Если сумма цифр в старшем разряде равна или больше р, | |
ci+1= 1 | то должна появиться 1 в следующем разряде | |
Endif | ||
else | Иначе (разрядная сумма меньше р), разрядная сумма определяется иным способом, и переменной «Перенос» присваивается значение «0». | |
ci=Si; П=0; | ||
Endif | Оператор конца условного оператора, который показывает, что все действия условного оператора записаны. | |
Next | Оператор конца цикла, который показывает, что все повторяющиеся действия оператора цикла For записаны. | |
Print C | Печатать значение суммы двух чисел |
Рис. 9.4.3.
Пример 2. Сложить 2 числа 262,510 и 38,7510 в 10-ичной системе счисления (Рис. 9.4.4.).
Записи типа «5+7=12=10+2» в схеме примера имеют следующий смысл. Если при суммировании двух цифр получено число Si >=p, то Si= p+ri и П=1, где r –цифра разрядного результата.
Рис. 9.4.4.
Пример 3. Сложить 2 числа 10000110,12 и 100110,112 в 2-ичной системе счисления (Рис. 9.4.5.).
Рис. 9.4.5.
Пример 4. Сложить 2 числа 406,48 и 46,68 в 8-ичной системе счисления (Рис. 9.4.6.).
Рис. 9.4.6.
Пример 5. Сложить 2 числа 106,816 и 26,1216 в 16-ичной системе счисления (Рис. 9.4.7.).
Рис. 9.4.7.
Операция «вычитание»
Пример 1. Из числа 658738110 вычесть число 546791610 (Рис. 9.4.8.).
Номер строки таблицы | Пояснения | Номер разряда | |||||||
Обозначение кода числа А | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 | |
Обозначение кода числа B | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
Код числа А (уменьшаемое) | |||||||||
Код числа B (вычитаемое) | |||||||||
Изменённое уменьшаемое из-за заёма для разряда «0» | 7 | 11 | |||||||
Код числа B (вычитаемое) | |||||||||
Изменённое уменьшаемое из-за заёма для разряда «2» | 6 | 13 | |||||||
Код числа B (вычитаемое) | |||||||||
Изменённое уменьшаемое из-за заёма для разряда «3» | 7 | 16 | |||||||
Код числа B (вычитаемое) | |||||||||
Результат операции «вычитание» ri |
Рис. 9.4.8.
Операция «вычитание» выполняется для каждого разряда, начиная с младшего. Эта операция является обратной операции «сложение».
Разрядное вычитание ai-bi возможно проводить, если ai >=bi. В противном случае необходимо выполнить «заём» - уменьшить цифру последующего разряда на 1, а к цифре текущего разряда добавить основание системы счисления. Такой заём выполнен в строке 5 для младшего разряда (изменённые цифры разрядов «0» и «1» подчёркнуты).
Аналогичная ситуация (уменьшаемое меньше вычитаемого) существует и для разряда «2» (строка 5). В строке 7 представлены изменённые цифры разрядов «2» и «3».
После заёма в разряде «3» цифра уменьшаемого стала меньше цифры вычитаемого, поэтому необходимо выполнить заём для этого разряда. В строке 9 представлены изменённые цифры разрядов «3» и «4». Теперь все цифры уменьшаемого (строка 9) больше цифр вычитаемого (строка8), и можно проводить поразрядное вычитание для получения результата (строка11).
Реально поразрядное вычитание проводится последовательно, начиная с младшего разряда. При необходимости сразу же выполняется заём. В примере поразрядное вычитание проводится в строках 9, 10, 11 исключительно для сокращения строк в таблице.
Пример 2. Из числа 110101,012 вычесть число 11010,12 (Рис. 9.4.9.).
Рис. 9.4.9.
Цифры в строках имеют следующий смысл. Первая цифра – цифра уменьшаемого. Вторая цифра «-1» - учёт заёма, который выполнялся для предыдущего разряда. Цифра «+2» - увеличение цифры текущего разряда за счёт заёма из последующего разряда. Последняя цифра – цифра вычитаемого.
В дальнейших примерах последовательность цифр в строках будет иметь этот же смысл.
Пример 3. Из числа 421,38 вычесть число 265,78 (Рис. 9.4.10.).
Рассмотрим для этого примера смысл элементов в строке 3 в соответствии с пояснениями к примеру 2.
«2» - цифра уменьшаемого;
«-1» - уменьшение цифры данного разряда за счёт того, что из данного разряда выполнялся заём для разряда «0»;
«+8» - увеличение цифры данного разряда, т.к. вычитаемое больше уменьшаемого;
«-6» - цифра вычитаемого.
Рис. 9.4.10.
Пример 4. Из числа 6А32,5416 вычесть число 53Е1,6216 (Рис. 9.4.11.).
Рис. 9.4.11.
Операция «умножение»
Пример 1. Перемножить число 26310 на число 810 (Рис. 9.4.12.).
В отличие от операции «сложение» при умножении перенос может быть в пределах 1-8. Максимальное значение переноса (П=8) возникает при умножении 9*9=81. Формально для 10-ичной системы цифра разрядного результата равна младшей цифре произведения. По существу, для системы счисления с любым основанием р цифра в разряде результата равна остатку от деления произведения двух цифр сомножителей на основание системы счисления: ri=ai*bi-([ai*bi/p]*p). В квадратных скобках представлена целая часть деления.
Номер строки таблицы | Пояснения | Номер разряда | |||
Обозначение кода числа А | а3 | a2 | a1 | a0 | |
Обозначение кода числа B | b3 | b2 | b1 | b0 | |
Код числа А | |||||
Код числа В | |||||
Поразрядные произведения | |||||
Первичный результат | |||||
Перенос первичный | |||||
Вторичный результат: сумма первичного результата с первичным переносом | |||||
Вторичный перенос | |||||
Результат: сумма вторичного результата со вторичным переносом |
Рис. 9.4.12.
Пример 2. Перемножить число 10112 на число 1012 (Рис. 9.4.13.).
Число А | ||||||
Число B | ||||||
Результат поразрядного умножения b0 на число А | ||||||
Результат поразрядного умножения b2 на число А | ||||||
Результат |
Рис. 9.4.13.
При выполнении операции «умножение» в 2-ичной системе счисления перенос возникает только при суммировании поразрядных результатов.
Пример 3. Перемножить число 76138 на число 468 (Рис. 9.4.14.).
Номер строки таблицы | Пояснения | Номер разряда | |||||
Обозначение кода числа А | а3 | a2 | a1 | a0 | |||
Обозначение кода числа B | b3 | b2 | b1 | b0 | |||
Код числа А | |||||||
Код числа В | |||||||
6*7+4=46=5*8+6; 6*6+1=37=4*8+5; 6*1+2=8=1*8+0; 6*3=18=2*8+2 | |||||||
4*7+3=31=3*8+7; 4*6=24=3*8+0; 4*1+1=5; 4*3=12=1*8+4 | |||||||
Результат |
Рис. 9.4.14.
Рассмотрим пояснения в строках 5 и 6 таблицы. Все операции выполняются в привычной для нас 10-ичной системе счисления. Остаток от деления произведения цифр разряда на основание системы вычисляется также в 10-ичной системе счисления. Перенос в последующем разряде суммируется с произведением двух цифр. Только после этого суммирования определяется цифра результата в разряде.
Пример 4. Перемножить число 7A5E16 на число B616 (Рис. 9.4.15.).
Номер строки таблицы | Пояснения | Номер разряда | |||||
Обозначение кода числа А | а3 | a2 | a1 | a0 | |||
Обозначение кода числа B | b3 | b2 | b1 | b0 | |||
A | E | ||||||
B | |||||||
6*7+3=45=2*16+13=2*16+D; 6*A+2=62=3*16+14=2*16+E; 6*5+5=35=2*16+3; 6*14=84=5*16+4 | |||||||
11*7+7=84=5*16+4; 11+10+4=114=7*16+2; 11*5+9=64=4*16+0; 11*14=154=9*16+10=9*16+A | |||||||
Результат | F | E | D |
Рис. 9.4.15.
Дата публикования: 2015-10-09; Прочитано: 259 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!