Арифметические операции в позиционных системах счисления

Сложение и вычитание эффективно выполнять в исходной системе счисления. Способ с переводом каждого числа в 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


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



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