Вычитание чисел с использованием дополнительного кода

Лекция 5-6. Выполнение арифметических операций над числами в различных системах счисления

 

Выполнение сложения

При сложении двух чисел в системе счисления с основанием q необходимо записать их столбиком одно над другим так, чтобы соответствующие разряды одного слагаемого располагался под соответствующими разрядами другого слагаемого. Сложение производится поразрядно справа налево, начиная с младших разрядов слагаемых. Рассмотрим сложение в разряде с номером i. Введем обозначения: а , b -цифры соответственно первого и второго слагаемых i-го разряда, p -признак переноса из i-1 разряда. Признак переноса p  равен 1, если в i-1 разряде сформирована единица переноса и p равен 0 в противном случае.

Найдем сумму: S =a + b + p ; a  и b - десятичные числа, которые соответствуют  цифрам ai и bi.

Сложение производиться в десятичной системе счисления. Возможны два случая:

1. S q. В этом случае из S  вычтем основание системы счисления q, сформируем признак переноса в следующий i+1 разряд, равный 1 и разности, полученной в результате вычитания, поставим в соответствии цифру s  системы счисления с основанием q.

2. S < q.. Сформируем признак переноса p  в следующий i+1 разряд, равный 0. Поставим в соответствии десятичному числу S  цифру s  системы счисления с основанием q.

Полученная цифра s  является цифрой i-го разряда суммы. Аналогично производится сложение в каждом разряде.

Задания и упражнения

1. Сложить числа 10010110012 и 10110001112.

2. Найдем сумму чисел 11318 и 13078, представленных в восьмеричной системе счисления:

3. Найдем сумму чисел 25916 и 2с716, представленных в шестнадцатеричной системе счисления:

 

Решение задания №1

Сложим два двоичных числа: 1001011001 и 1011000111:

  1   1 1   1 1 1 1 1              

+

1 0 0 1 0 1 1 0 0 12  

+

6 0 110
1 0 1 1 0 0 0 1 1 12   7 1 110
  1 0 1 0 0 1 0 0 0 0 02     1 3 1 210

Решение задания № 2

Найдем сумму чисел 11318 и 13078, представленных в восьмеричной системе счисления:

      1              

+

1 1 3 18  

+

7 1 110
1 3 0 78   6 0 110
  2 4 4 8     1 3 1 210

Решение задания № 3

Найдем сумму чисел 25916 и 2с716, представленных в шестнадцатеричной системе счисления:

  1 1              

+

2 5 916  

+

7 1 110
2 с 716   6 0 110
  5 2 016     1 3 1 210

 

Выполнение вычитания

Для того чтобы вычесть числа в системе счисления с основанием q, необходимо записать одно под другим столбиком, чтобы разряды вычитаемого располагались под соответствующими разрядами уменьшаемого. Вычитание производиться поразрядно, начиная с младшего разряда. Рассмотрим вычитание в i-ом разряде. Введем обозначения: a  и b -цифры соответствующего уменьшаемого и вычитаемого i-го разряда, p -признак единицы заема в i–ом разряде.

Этот признак равен 1, если возникла необходимость в заеме единицы в i-1 разряде и признак pi равен 0 в противном случае. Поставим в соответствии a  и b  десятичные.числа a  и b . Найдем значение выражения r =a  - b  + p . Возможны два случая:

1. r < 0. В этом случае признак p =-1, т.е. возникает заем единицы в следующем разряде. Найдем сумму r + q. Полученной сумме поставим в соответствие цифру r  системы счисления с основанием q.

2. r  0. В этом случае r  необходимо поставить в соответствие цифру ri. Признак заема p = 0.

Полученная цифра r  является цифрой i-го разряда разности. Аналогично производится вычитание в каждом разряде.

 

Задания и упражнения

1. Вычесть из двоичного числа 1001011001 двоичное число 1011000111.

2. Найдем разность чисел 13078 и 11318, представленных в восьмеричной системе счисления:

3. Найдем разность чисел 25916 и 2с716, представленных в шестнадцатеричной системе счисления:

 

Решение задания №1

Необходимо вычесть из двоичного числа 1001011001 двоичное число 1011000111.

Так как 1001011001 меньше числа 1011000111, то вычитание произведем из числа 1011000111. Вычтем из него число 1001011001, а к разности припишем знак «-»:

      -1 -1 -1 -1                    
  1 0 1 1 0 0 0 1 1 12       7 1 110
  1 0 0 1 0 1 1 0 0 12       6 0 110
        1 1 0 1 1 1 02       1 1 010

Итак, 1001011001 – 1011000111 = - 1101110.

Решение задания №2

Найдем разность чисел 13078 и 11318, представленных в восьмеричной системе счисления:

    -1                

-

1 3 0 78  

-

7 1 110
1 1 3 18   6 0 110
    1 5 68       1 1 010

Решение задания №3

Найдем разность чисел 25916 и 2с716, представленных в шестнадцатеричной системе счисления:

  1 1              

-

2 с 716  

-

7 1 110
2 5 916   6 0 110
    6 е16       1 1 010

 

Выполнение умножения

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

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

Задания и упражнения.

1. Перемножить двоичные числа: 1001011001 и 100100.

2. Перемножить двоичные числа: 1000000001 и 111110.

Решение задания №1.

  14 13 12 11 10 9 8 7 6 5 4 3 2 1 0              

´

       

 

1 0 0 1 0 1 1 0 0 1  

´

 

 

6 0 1
                1 0 0 1 0 0       3 6

+

      1 0 0 1 0 1 1 0 0 1 0 0  

+

  3 6 0 6
1 0 0 1 0 1 1 0 0 1             1 8 0 3  
  1 0 1 0 1 0 0 1 0 0 0 0 1 0 0     2 1 6 3 6

 

Проверим результат выполнения умножения, переведем число 1010100100000100 в двоичную системы счисления:

1010100100001002 = 1´214 + 0´213 + 1´212 + 0´211 + 1´210 + 0´29 + 0´28+ +1´27 +0´26+0´25+ 0´24+ 0´23+ 1´22+ 0´21+ 0´20 = 16384 + 0 + 4096 + 0 + + 1024 +.0 + 0 + 128 + 0 + 0 + 0 + 0 + 4+ 0 + 0 = 2163610.

Таким образом, произведение чисел 1001011001 и 100100 равно 1010100100001002.

Выполнение деления

Для того чтобы разделить одно двоичное число не другое необходимо записать числа также как записываются числа при делении в десятичной системе счисления (уголком). Далее выполняются действия:

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

2. Запишем под образованным числом делитель таким образом, чтобы младший разряд делителя располагался под младшим разрядом образованного числа.

3. Выполним вычитание, т.е. из образованного числа вычтем делитель и найдем разность.

4. В область частного запишем единицу. Если в области частного имеется последовательность цифр, то единица приписывается справа к последовательности цифр, размещенной в области частного.

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

5.1. Образованное число меньше делителя. В этом случае в область частного необходимо справа приписать ноль и повторить шаг 5.

5.2. Образованное число больше или равно делителя. В этом случае следует вновь выполнить шаги 2, 3, 4, 5.

Задания и упражнения

1. Выполним деление в двоичной системе счисления двоичного числа 1001011001 на двоичное число 100100

2. Выполним деления числа 1011001 на число 111.

Решение задания № 1

Выполним деление двоичного числа 1001011001 на двоичное число 100100:

  1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0     6 0 110 3 6
  1 0 0 1 0 0         1 0 0 0 0       5 7 6 1 6
            1 1 0 0 1                   2 5    

 

Таким образом, частным отделения будет являться число 10000, а остатком – число 11001.

Вычитание чисел с использованием дополнительного кода.

Пусть заданы числа А и В, и пусть А и В >0. Для выполнения вычитания выполним следующие шаги:

1. Найдем двоичные код чисел А и В. Пусть при этом количество различных разрядов числа А = k1, а В = k2.

2. Найдем минимальное количество разрядов которое необходимо для выполнения вычитания к = mах (k1+1, k2+1),

3. Найдем дополнительный код числа –В, причем количество разрядов для хранения дополнительного кода не должно быть < k.

4. Произведем сложение числа А в двоичной системе счисления и числа –В, записанного в дополнительном коде. При сложении необходимо использовать только количество разрядов, которое используется при хранении числа –В в дополнительном коде. Если в результате сложения возникает перенос из знакового разряда (единица переноса), то она отбрасывается и дальше не используется. Знаковые разряды складываются как обычные разряды двоичных чисел.

Пример:

5 – 3 = 2

Решим задачу с применением правила вычитания чисел с использованием дополнительного кода.

1. 510 à 1012; k1 = 3

 310 à 112; k2 = 2

     2. k = max(k1+1, k2+1) = max (3 + 1, 2 + 1) = 4

     3. -3 переводим в дополнительный код:

     - 32 = 112;

     - дополним число 112 слева нулями до разрядности 4, получаем число 00112;

     - инвертируем получившиеся число: 11002;

     - прибавляем к данному числу единицу равную по весу единице младшего разряда:

+

1 1 0 02
0 0 0 12
  1 1 0 12

4.

+

0 1 0 12  

+

+ 510
1 1 0 12   - 310
  0 0 1 02       210

 

 

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

Пример 4.1. Сложить число 17563 с числом -1594 в двоичной системе счисления

Единица переноса

 

11000001100111100
1-е слагаемое

+

 756310 = 01000100100110112
2-е слагаемое -159410  = 11111001110001102
Результат   1596910 = 00111110011000012

Пример 4.2. Сложить число 1594 с числом -17563 в двоичной системе счисления

Единица переноса

 

0111110011000000              
1-е слагаемое

+

159410 = 00000110001110102
2-е слагаемое -1756310 = 10111011011001012
Результат   -1596910 = 11000001100111112

 

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: