Вычитание
Н. — Хорошо, теперь я более или менее умею складывать. Но скажи, пожалуйста, как производят вычитание?
Л. — Обычно проблему обходят. Предположи, что нам нужно из числа Л вычесть число В. Для начала к А прибавляем одну единицу, а затем прибавляют противоположное В число (его также называют дополнением к В) и при этом сложении не учитывают переноса.
Н. — Что ты называешь противоположным В числом?
Л. — Очень просто, это число, которое получается из числа В, если все его нули заменить единицами, а все его единицы нулями.
Число В меньше Л, и поэтому слеза к нему нужно дописать столько нулей, чтобы оба числа состояли из одинакового количества цифр. При преобразовании числа В в противоположное ему число все нули превращаются в единицы. Возьмем для большей наглядности числовой пример.
Предположим, что А равно 101101, (т. е. 45), а В равно 1011.
Н. — Иначе говоря, одиннадцати.
Л. — Браво, Незнайкин. Ты очень хорошо усвоил двоичную систему счисления. Следовательно, число В мы должны записать в следующем виде:
001011, чтобы оно как и число А состояло из шести цифр. В результате преобразования его в противоположное ему число получаем:
110100
А теперь позволь мне, Незнайкин, задать тебе один вопрос: что мы получим, если это противоположное число прибавим к числу В?
Н. — Я думаю, что это сложение не представляет труда везде, где в одном из чисел стоит 1, в другом числе стоит нуль. Поэтому сумма этих двух чисел будет равна шестизначному числу, где все цифры 1, т. е. мы получим 111111.
Л. — Браво, совершенно верно! А теперь прибавь к полученному результату одну единицу.
Н. — Хорошо, если я прибавлю эту единицу, то сумма единиц даст нам нуль. Я переношу 1 в следующий разряд, прибавив ее к имеющейся здесь 1, я должен записать нуль на месте двоек и запомнить 1… Хм, очень любопытно, в итоге я получу 1000000.
Л. — Правильно. Но теперь в твоем числе семь цифр. Если пренебречь последним переносом, у нас останется лишь нуль. Как ты видишь, в результате сложения противоположного В числа, самого числа В и одной единицы мы получаем нуль. Иначе говоря, если пренебречь переносом, то сумма противоположного В числа и единицы даст нам нечто эквивалентное — В. Следовательно, для получения нужного результата мне достаточно прибавить это число к числу
Л. Операция имеет следующий вид.
Н. — Я вижу, что в полученном результате слева стоит единица в скобках. Это несомненно появилось вследствие того, что ты не хочешь учитывать последний перенос.
Л. — Совершенно верно. Если теперь прибавить еще одну единицу, то в результате получим 100010. Преобразовав двоичное число в десятичное, получим 34, которое точно соответствует разности 45 и 11.
Н. — Должен признаться, что, не прибегая к двоичной системе счисления, я получил бы верный результат значительно быстрее!
Л. — Ты, может быть. Но электронные машины считают в двоичной системе счисления быстрее, чем в десятичной, даже если учитывать время, необходимое для преобразования.