Сложение и вычитание эффективно выполнять в исходной системе счисления. Способ с переводом каждого числа в 10-тичную систему, выполнении действия в ней, а затем обратного преобразования существенно длиннее и зачастую приводит к ошибкам.
При сложении чисел в произвольной позиционной системе счисления с основанием р в каждом разряде производится сложение цифр слагаемых и цифры, переносимой из соседнего младшего разряда, если она имеется. При этом необходимо учитывать, что если при сложении чисел получилось число, большее или равное р, то представляем его в виде p*k + b, где kÎ N – количество единиц переноса в следующий разряд 0 ≤ b ≤ p - 1
При сложении и вычитании двоичных чисел достаточно знать правила сложения двоичных цифр (таблицу сложения двоичной системы):
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10
Примеры:
1 1 1
1) 110012
+ 1101 2
1001102
1 +1 = 2 = 1 *2 + 0 («1» переносится в старший разряд)
0 +0 + 1 = 1
0 + 1 = 1
1 + 1 = 2 = 1 *2 + 0 («1» переносится в старший разряд)
1 + 0 + 1 = 2 = 1 *2 + 0 («1» переносится в старший разряд)
1 1 1
2) 76158
+ 346 8
101638
5 +6 = 11 = 1 *8 + 3 («1» переносится в старший разряд)
4 +1 + 1 = 6
6 + 3 = 9 = 1 *8 + 1 («1» переносится в старший разряд)
7 + 0 + 1 = 8 = 1 *8 + 0 («1» переносится в старший разряд)
1 1 1
3) 9FA16
+ E836 16
F23016
10 +6 = 16 = 1 *16 + 0 («1» переносится в старший разряд)
15 +3 + 1 = 19 = 1 *16 + 3 («1» переносится в старший разряд)
9 + 8 + 1 = 18 = 1 *16 + 2 («1» переносится в старший разряд)
0 + 14 + 1 = 15 = F
При вычитании чисел в р цифры вычитаются поразрядно. Если в рассматриваемом разряде необходимо от меньшего числа отнять большее, то занимается единица в следующем (старшем разряде). Занимаемая единица равна р единицам этого разряда (аналогично, когда занимаем единицу в десятичной системе счисления, то занимаемая единица равна 10.) Для двоичной системы счисления занимаемая единица = 210 = 102, для восьмеричной системы счисления занимаемая единица = 810 = 108, для шестнадцатеричной системы счисления занимаемая единица = 1610 = 1016.
Примеры: Точками в примерах с вычитанием отмечены разряды, из которых приходилось занимать.
· · · 2
1) 110102
1101 2
11012
2 – 1 = 1 (так как 0 < 1 пришлось занять из соседнего разряда)
0 – 0 = 0
2 – 1 = 1 (так как 0 < 1 пришлось занять из соседнего разряда)
В этом разряде остался 0, вновь пришлось занимать из старшего разряда: 2 – 1 = 1
В этом разряде остался 0
· · 8
2) 76158
346 8
72478
8 + 5 – 6 = 7 (так как 5 < 6 пришлось занять из соседнего разряда)
8 + 0 – 4 = 4 (после того, как заняли, в этом разряде остался 0)
5 – 3 = 2
7 – 0 = 7
· · · 16
3) E83616
9FA 16
DE3C16
16 + 6 – 10 = 12 = C16 (заняли из соседнего разряда)
16 + 2 – 15 = 3 (В этом разряде осталась 2, заняли из соседнего разряда)
16 + 7 – 9 = 14 = Е16
В этом разряде осталась D16
Иногда при вычитании необходимо занимать единицу через несколько разрядов, так как в соседнем или в нескольких соседних разрядах подряд стоят нули. В этом случае надо иметь в виду, что в этих разрядах на месте нулей после того, как заняли, будет располагаться «последняя цифра» той системы счисления, в которой записано уменьшаемое, т.е. цифра 1 для двоичной, цифра 7 для восьмеричной и цифра F для 16-ричной систем счисления.
Примеры:
· 1 1 2 · 7 7 8 · F F 16
10002 10008 100016
11 2 11 8 AD 16
1012 7678 F5316
Замечание. При выполнении арифметических операций с числами, которые находятся в разных системах счисления, необходимо перевести числа в одну и ту же систему и только потом выполнять действие. Конечно, можно в качестве такой системой счисления выбрать десятичную систему, однако, в случае, когда в числах много цифр, такой перевод будет трудоемким. Например, при переводе числа 123456789ABCDEF16 в десятичную систему придется вычислять 16 в степенях вплоть до четырнадцатой.
Умножение в позиционной системе счисления является достаточно сложным действием, поэтому более надежно умножение выполнять в 10-тичной системе с предварительным и завершающим переводом в исходную систему. Однако умножение на 2 можно представить в виде суммы. Например: 2*Т, где Т = 3158
2 * 3158 = 3158
315 8
6328
При умножении на 710, 810, 910 можно воспользоваться переводом в десятичную систему. Но так как десятичное число 8 равно 8-ричному числу 10 (810 = 108), тогда умножение можно заменить умножением на десять с последующим вычитанием или сложением.
Примеры:
1) 810 * 62718 = 108 * 62718 = 627108
2) 710 * 62718= (810 – 110) * 62718 = (108 – 18) * 62718 =
= 627108
6271 8
544178
3) 910 * 62718= (810 + 110) * 62718 = (108 + 18) * 62718 =
= 627108
6271 8
544178
Замечание. Если второй сомножитель представлен в двоичной или шестнадцатеричной системе, его предварительно необходимо перевести в восьмеричную систему счисления, например: 710 * А3С516.
Сначала переведите А3С516 в восьмеричную систему, используя метод тетрад и триад, а затем выполните умножение.
А3С516 = 1010 0011 1100 01012 = 001 010 001 111 000 1012 = 1217058.
710 * 1217058 = (810 – 110) * 1217058 = (108 – 18) * 1217058 =
= 12170508
1217058
10751438
При умножении на 1510, 1610, 1710 можно воспользоваться тем фактом, десятичное число 16 равно 16-ричному числу 10 (1610 = 1016). В этом случае, как и в предыдущем, умножение можно заменить умножением на десять с последующим вычитанием или сложением.
Примеры:
1) 1610 * A6D516 = 1016 * A6D516 = A6D5016
2) 1510 * A6D516= (1610 – 110) * A6D516 = (1016 – 116) * A6D516=
= A6D5016
A6D5 16
9C67B16
3) 1710 * A6D516= (1610 + 110) * A6D516 = (1016 + 116) * A6D516=
= A6D5016
= A6D5016
A6D5 16
B142516
Замечание. Если второй сомножитель представлен в двоичной или восьмеричной системе, его предварительно необходимо перевести в шестнадцатеричную систему счисления, например: 1710 * 71548.
Сначала переведите 71548 в шестнадцатеричную систему, используя метод тетрад и триад, а затем выполните умножение.
71548 = 111 001 101 1002 = 1110 0110 11002 = E6C16.
1710 * E6C16 = (1610 + 110) * E6C16 = (1016 + 116) * E6C16=
= E6C016
E6C 16
F52C16