Арифметические операции над числами с фиксированной точкой — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Арифметические операции над числами с фиксированной точкой

2018-01-13 625
Арифметические операции над числами с фиксированной точкой 0.00 из 5.00 0 оценок
Заказать работу

В ВТ, с целью упрощения реализации арифметических операций, применяют специальные коды. За счет этого облегчается определение знака результата операции, а операция вычитания чисел сводится к арифметическому сложению. В результате упрощаются устройства, выполняющие арифметические операции.

Сложение (вычитание). Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код. Пусть числа А ≥ 0 и В ≥ 0, тогда операция алгебраического сложения выполняется в соответствии с табл.2.1.

Таблица 2.1 - Таблица преобразования кодов при алгебраическом сложении

Требуемая операция Необходимое преобразование
А+В А-В -А+В -А-В А+В А+(-В) (-А)+В (-А)+(-В)

 

Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа. Сложение двоичных чисел осуществляется последовательно, поразрядно. При выполнении сложения цифр необходимо соблюдать следующие правила.

1. Слагаемые должны иметь одинаковое число разрядов. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа, и незначащие нули справа к дробной части числа.

2. Знаковые разряды чисел участвуют в сложении так же, как и значащие.

3. Необходимые преобразования кодов производятся с изменением знаков чисел, приведенных в п.1. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу.

4. При образовании единицы переноса из старшего знакового разряда, в случае использования обратного кода (ОК), эта единица складывается с младшим числовым разрядом. При использовании дополнительного кода (ДК) единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.

Пример:

Вычислить 10112 + 110012 + 1112.

Проверим результат сложения:

            (переносы)
            (первое число)
+           (второе число)
            (третье число)
            (результат)

 

10112 = 1110, 110012 = 2510, 1112 = 710, 1010112 = 4310, 1110 + 2510 + 710 = 4310, что указывает на правильность произведённых расчётов.

Пример:

 

Сложить двоичные числа 110100 и 10111.

Запишем числа друг под другом (для удобства):

              (переносы)
              (первое число)
+             (второе число)
              (результат)

 

 

Заметьте, что в случае переноса складываются уже три двоичные цифры!

Проверим результат:

1101002 = 5210, 101112 = 2310, 10010112 = 7510, 5210 + 2310 = 7510, что подтверждает правильность вычислений.

Пример: Сложить два числа: А10 = 7; В10 = 16.

Решение:

А2=+ 111 = + 0111;

B2=+1000=+10000

Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:

[ А2 ]п = [A2 ]ок = [ А2 ]дк = 0: 00111;

[B2]п=[B2]ок=[B2]дк=0:10000

Сложение в обратном или дополнительном коде дает один и тот же результат: 0: 00111

+ 0: 10000

С2 = 0: 101112 С10 = + 23.

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

Пример. Сложить два числа: А10 = + 16; В10 = -7 в ОК и ДК. В соответствии с табл.1 должна быть реализована зависимость А+(-В), в которой второй член преобразуется с учетом знака:

2]п = 0: 10000 = 0: 10000; [А2]ок = 0: 10000; [А2]дк = 0: 10000; [В2]п=1: 111 = 1: 00111; +[В2]ок = 1: 11000; [В2]дк = 1: 11001.

Сложение в ОК: [А2]ок = 0: 10000

+[В2]ок = 1: 11000

0: 01000

+ 1

0: 01001 С2 = 0: 01001, С10 = +9.

Сложение в ДК: [A2]ДК = 0: 10000

+ [B2]ДК = 1: 11001

0: 01001 C2 = 0: 01001, С10 = +9.

При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда (см. п.4 правил). В случае ДК этот перенос игнорируется.

Умножение.

Умножение двоичных многоразрядных чисел производится путем образования частичных произведений и последующего их суммирования. Каждое частичное произведение равно нулю, если в соответствующем разряде множителя стоит 0, или равно множимому сдвинутому на соответствующее число разрядов влево, если в разряде множителя стоит 1.

 

Таким образом, операция умножения многоразрядных двоичных чисел внутри ЭВМ сводится к операции сдвига и сложения. Положение точки, отделяющей целую часть от дробной части, определяется так же, как и при умножении десятичных чисел.

Произведение получается путем сложения частных произведений, представляющих собой разряды множимого, сдвинутые влево в соответствии с позициями разрядов множителя. Частные произведения, полученные умножением на нуль, игнорируются. Важной особенностью операции умножения n - разрядных сомножителей является увеличение разрядности произведения до п+ п=2п. Знак произведения формируется путем сложения знаковых разрядов сомножителей. Возможные переносы из знакового разряда игнорируются.

 

Умножение двоичных чисел наиболее просто реализуется в прямом коде. Рассмотрим, каким образом оно приводится к операциям сложения и сдвигам.

Пример. Перемножить в двоичной СС числа 7,510 и 5.

Решение.

                ,1   множимое
7,5         *         * множитель
                1-е част. произв.
37,5   +               2-е част. произв.
                    3-е част. произв.
                ,1   произведение

 

В рассмотренном примере второй разряд множителя равен нулю, поэтому второе частичное произведение также равно нулю.

Пример. Умножить два числа А10 = 7; В10 = 5. Перемножим эти числа, представленные прямыми двоичными кодами, так же, как это делается в десятичной системе.

[ А2 ]п = 111 - множимое

x

[B2]п = 101 - множитель

111 - множимое (сдвиг на 0 разрядов)

000 - множимое умножение на 0 (сдвиг на 1 разряд)

111 - множимое (сдвиг на 2 разряда)

2]п = 100011 - произведение

С10 = 35.

Произведение получается путем сложения частных произведений, представляющих собой разряды множимого, сдвинутые влево в соответствии с позициями разрядов множителя. Частные произведения, полученные умножением на нуль, игнорируются. Важной особенностью операции умножения n - разрядных сомножителей является увеличение разрядности произведения до п+ п=2п. Знак произведения формируется путем сложения знаковых разрядов сомножителей. Возможные переносы из знакового разряда игнорируются.

Деление.

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

 

Деление производится так же, как это делается обычно в десятичной системе. Сначала проверяется, можно ли вычесть значение делителя из старших разрядов делимого. Если возможно, то в разряде частного записывается единица и определяется частная разница. В противном случае в частное записывается нуль, и разряды делителя сдвигаются вправо на один разряд по отношению к разрядам делимого. К полученной предыдущей разнице сносится очередная цифра делимого, и данный процесс повторяется до тех пор, пока не будет получена необходимая точность. Если учесть, что все вычитания в ЭВМ заменяются сложением в ОК или ДК (смотри табл.2.1), то действительно операция деления приводится к операциям сложения и сдвигам вправо разрядов делителя относительно разрядов делимого. Отметим, что делимое перед операцией деления должно быть приведено к 2n - разрядной сетке. Только в этом случае при делении на n-разрядный делитель получается n-разрядное частное.

Знак частного формируется также путем сложения знаковых разрядов делимого и делителя, как это делалось при умножении.

Пример. Разделить два числа А10 = 45; В10 = 5. Деление провести в двоичной системе счисления.

[А2]п = 101101;

[B2]п =101;

Делимое Делитель

101101 | 101

-101 1001 - частное

- 101

Пример: Разделить число 11002 на 112.

   
   
   

Проверка даёт, что:

11002 = 1210, 112 = 310, 1002 = 410, 1210 : 310 = 410, и, таким образом, деление выполнено правильно.

Пример: Произвести деление двоичных чисел 1111 и 100 с остатком.

             
             
             
             
             

Другими словами, 1111/100 = 1111/100, или, поскольку знаменатель выражен числом 2 в натуральной степени, 11,11.

Действительно, при проверке видим, что:

11112 = 1510, 1002 = 410, 112 = 310, 1510: 410 = (33/4)10 = 3,7510 и, таким образом, деление выполнено правильно.

Пример: Разделить двоичные числа 1111 и 100 и выразить результат двоичной дробью.

При делении можно сразу получить двоичную дробь, если продолжать действие даже тогда, когда целая часть делимого израсходована. В этом случае необходимо поставить в частном двоичную запятую и «снимать» с делимого нули из его дробной части, которые в ней всегда находятся. Процесс полностью аналогичен делению «углом» привычных нам десятичных чисел:

               
            ,1  
               
               
               
               
               
               
               

Проверка данных вычислений приведена в предыдущем примере.

 

 


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.05 с.