Пример вычитания двоичных положительных чисел сервисом www.reshinfo.com:
машинный метод

Ваша задача будет решена с вашими исходными данными OnLine и бесплатно

Задача:

Вычесть из числа A = 501410 число B = 23710 в двоичной системе счисления.


Решение:

Для выполнения операции вычитания В из A достаточно выполнить сложение A с числом противоположным В, т.е. взятым с противоположным знаком. Осуществим, это в несколько этапов.

1) Сформируем число В1 противопроложное В, т.е. В1 = .
    В нашем случае В1 = -23710.

2) Переведем числа в двоичную систему счисления:
    A = 501410 = 10011100101102
    B1 = -23710 = -111011012

3) Впишем число A в 16-ти разрядный регистр, начиная с младших разрядов (нумерация разрядов начинается с нуля). В недостающие разряды записываем нули.

Разр.1514131211109876543210
A0001001110010110

4) Впишем число В1 в 16-ти разрядный регистр, начиная с младших разрядов. В недостающие разряды записываем нули.

Разр.1514131211109876543210
B10000000011101101
Но, так как число B1 отрицательное, то нам необходимо учесть этот факт при сложении. Для этого представим наше число в дополнительном коде. Перевод в дополнительный код осуществим в два этапа:

4.1) Вначале получим обратный код. Для этого просто проинвертируем каждый разряд регистра (заменим "0" на "1", а "1" на "0").

Разр.1514131211109876543210
Bобр1111111100010010
4.2) Прибавим к числу в обратном коде единицу и получим дополнительный код.

Разр.c1514131211109876543210
Bобр1111111100010010
+0000000000000001
Bдоп1111111100010011

Обратите внимание! Поскольку мы используем знаковую модель чисел, у нас 15-й разряд является знаковым разрядом и хранит знак числа. при этом "0" соответствует знаку "+" (число положительное), а "1" соответствует знаку "-" (число отрицательное). При этом старшим разрядом для чисел является 14-й разряд.

5) Сложим поразрядно числа A и Bдоп записывая результат в С начиная с младших разрядов. Правила поразрядного сложения, для двоичной системы счисления несложно вывести, рассуждая следующим образом.

Если соответствующие разряды обоих слагаемых содержат нули, то и сумма ноль. В тот же разряд числа С ставим ноль.

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

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

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


Перенос
из предыдущего разряда
Oi-1
Ai Bi Ci Перенос
в следующий разряд
Oi-1
 000 
 011 
 101 
 1101
1001 
10101
11001
11111


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


Разр.c1514131211109876543210
11111111111
A0001001110010110
Bдоп1111111100010011
C0001001010101001

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

6) Анализируем переполнение разрядной сетки. Для этого смотрим переносы в знаковый разряд и из знакового (в разряд "с"). Если они имеют одинаковый статус (оба есть или обоих нет), то все нормально переполнения нет. В нашем случае статус переносов одинаковый, результат операции корректен. В регистре "C" содержится сумма исходных чисел

7) Анализируем знак результата (15-й разряд). В нашем случае это "0", значит результат есть число положительное и следовательно представлено в прямом коде.



Ответ:    10011100101102 - 111011012 = 10010101010012

или в десятичной системе счисления: 501410 - 23710 = 477710




...вычесть MOИ чиcла в двоичной системе


...см.пример вычитания ручным методом


...к списку решаемых задач