Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Выполнение арифметических операций в позиционных системах счисления



Рассмотрим на примерах следующие арифметические операции: сложение, вычитание, умножение. Для каждой операции в первом примере будет рассматриваться 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...