4 Арифметические действия в двоичной системе
Рассмотрим, как выполняются основные арифметические действия в различных системах счисления.
Во-первых, приведем английские названия арифметических действий:
Сложение addition ADD
Вычитание subtraction SUB
Умножение multiplication MUL
Деление division DIV
Обратите внимание на последний столбик – это общепринятые в микропроцессорной технике обозначения соответствующих команд. Этот столбик, увы, надо выучить наизусть.
Арифметические действия можно выполнять в позиционной системе счисления с любым основанием. Отметим (эта мысль уже высказывалась) – десятичная система принципиально ничем не отличается от остальных позиционных систем счисления, и правила, принятые в десятичной системе счисления, вполне могут быть применимы в любой позиционной системе счисления.
4.1 Сложение в двоичной системе счисления
Операцию S = a + b можно задать в виде полной таблицы:
a | b | S |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 + перенос |
На английском языке перенос записывается как carry, поэтому в дальнейшем, чтобы экономить пространство и время будет для обозначения переноса использовать символ C. Причем индекс C означает номер разряда, в который будет осуществляться перенос: C0 – перенос в нулевой разряд, C4 – перенос в четвертый разряд и т.д.
Один перенос в старший разряд означает, что к тому, что получилось в этом старшем разряде, следует прибавить единицу.
Также эту операцию можно задать в виде компактной таблицы:
b | |||
a+b | 0 | 1 | |
a | 0 | 0 | 1 |
1 | 1 | 0+С |
Может быть кому привычнее представление, знакомое со школы:
![]() |
+0 +0 +1 +1
0 1 0 1
0 1 1 10
Обратите внимание – в последнем столбце я все же исхитрился и нарисовал вполне приличную стрелку, явно показывающую перенос в старший разряд. Ну, а если это я смог сделать, то наверняка сможет сделать и читатель. Поэтому при выполнении как домашних работ, так и контрольной в классе по второму модулю, наличие переносов обязательно должно отмечаться стрелочками. Отсутствие стрелочек будет трактоваться как непонимание того, что такое перенос (я не допускаю мысли, что Вы просто не дочитали до этого места…).
Это и можно считать определением сложения в двоичной системе счисления.
Но, как говорит Николай Аркадьевич Красиков, пример дороже правил. Поэтому давайте рассмотрим и пример.
![]() | ![]() | ![]() | |||
+1011.101
1011.001
10110.110
При сложении более чем двух чисел в двоичной системе для переноса может потребоваться два и более разряда, тогда как при сложении только двух двоичных чисел может возникнуть перенос только в старший разряд. Поэтому желательно за одну операцию складывать два числа, и микропроцессоры так и поступают.
4.2 Вычитание в двоичной системе счисления
Совершенно также введем вычитание в двоичной системе. Только вместо переноса там вводится заём. По-английски это слово пишется как borrow и ему в соответствие ставится буква B.
Приведем аналогичные таблицы для вычитания в двоичной системы счисления.
Операцию D = a - b можно задать в виде полной таблицы:
a | b | D |
0 | 0 | 0 |
0 | 1 | 1 + B |
1 | 0 | 1 |
1 | 1 | 0 |
Эту же операцию представим в виде компактной таблицы:
b | ||||
a - b | 0 | 1 | ||
a | 0 | 0 | 1 + B | |
1 | 1 | 0 | ||
Ну, и наконец классическое представление:
![]() |
-0 -0 -1 -1
0 1 0 1
0 1 1 0
Здесь стрелочкой отмечен заем из старшего разряда.
Отметим, что пока не введены отрицательные числа, уменьшаемое всегда должно быть больше вычитаемого. Если встречается обратная ситуация, то следует поменять местами уменьшаемое и вычитаемое, вычитая, таким образом, из большего числа меньшее, но, отмечая при этом, что результатом будет отрицательное число.
Давайте проверим правильность выполнения действий в предыдущем примере:
![]() | ![]() | ||
-10110.110
1011.001
1011.101
4.3 Умножение в двоичной системе счисления
Для умножения приведем только краткую таблицу, остальные формы представления Вы, я уверен, сможете быстро сделать самостоятельно.
b | ||||
a × b | 0 | 1 | ||
a | 0 | 0 | 0 | |
1 | 0 | 1 | ||
Ну а как на самом – то деле производить перемножение? Тут на помощь должно прийти неоднократно упоминаемое положение: десятичная система счисления принципиально ничем не отличается от других систем счисления. И если Вы умеете выполнять действия в десятичной системе счисления, то Вы умеете выполнять действия в любой системе счисления!
Давайте проверим это на практике.
×100.01 множимое
101 множитель