§ 25. Кадзіраванне лікавых даных

25.2. Выкананне арыфметычных дзеянняў у розных пазіцыйных сістэмах лічэння

Правілы выканання арыфметычных дзеянняў (складання, аднімання, множання і дзялення) у дзесятковай сістэме лічэння добра вядомыя. Гэтыя ж правілы выкарыстоўваюцца ў дачыненні да выканання арыфметычных дзеянняў і ў іншых пазіцыйных сістэмах лічэння.

У прыкладзе 25.5 разгледжаны правілы выканання паразрадных арыфметычных дзеянняў у двайковай сістэме лічэння.

Разгледзім алгарытмы выканання кожнага з арыфметычных дзеянняў у пазіцыйных сістэмах лічэння з адвольнай асновай р.

Складанне

Каб у сістэме лічэння з асновай p атрымаць суму S двух лікаў A і B, трэба падсумаваць лічбы, якія іх утвараюць, па разрадах i ад малодшага разраду да старэйшага па наступных правілах:

  1. Каліai + bi < p, то , si = ai + bi значэнне (i + 1)-га разраду не змяняецца.
  2. Каліai + bi ≥ p, то, si = ai + bi – p, значэнне (i + 1)-га рразраду павялічваецца на 1. Гэта звязана з тым, што  адзінак i-га разраду адпавядае адной адзінцы ( i + 1)-га разраду, а ў кожным разрадзе не можа знаходзіцца больш за (p – 1) адзінак.

Прыклад 25.6. Скласці лікі 11112 і 1012.

  1. Складваем значэнні ў нулявых разрадах складаемых: 1 + 1 = 102. Запісваем 0, а 1 пераносім у першы разрад: 1 + 1 = 102
  2. У першых разрадах складваем:
    1 + 0 = 1  і дабаўляем 1 з нулявога разраду. Атрымліваем 1 + 0 + 1 = 102. Запісваем 0, а 1 пераносім у другі разрад.
  3. Складваем значэнні ў другіх разрадах: 1 + 1 + 1 = 3(112), 3 ≥ 2, значыць, запісваем 1, а 1 пераносім у трэці разрад.
  4. Вылічваем у трэцім разрадзе: 1 + 1 = 2. Паколькі 2 ≥ 2, то запісваем 0, а 1 пераносім у чацвёрты разрад.

Упрыкладзе 25.7 выканана складанне двайковных змешаных лікаў.

Прыклад 25.8. Скласці лікі 63548 і 7438.

  1. Вылічваем: 4 + 3 = 7.
  2. Складваем: 5 + 4 = 9. 9 ≥ 8, значыць, запісваем 1 (паколькі 9 – 8 = 1), а 1 пераносім у другі разрад.
  3. Вылічваем: 3 + 7 = 10. Дабаўляем 1 з першага разраду 10 + 1 = 11.  11 ≥ 8, значыць, запісваем  3 (11 – 8 = 3 ), а 1 пераносім у трэці разрад.
  4. У трэцім разрадзе: 6 + 1 = 7.

Прыклад 25.9. Скласці лікі 5B416 і C5216.

  1. У нулявым разрадзе: 4 + 2 = 6.
  2. Вылічваем: B(11) + 5 = 16. 16 ≥ 16, значыць, запісваем  0 (16 – 16 = 0), а 1 пераносім у другі разрад.
  3. Складваем: 5 + C(12) = 17. Дабаўляем 1 з другога разраду: 17 + 1 = 18. 18 ≥ 16, значыць, запісваем 2 (18 – 16 = 2), а 1 пераносім у трэці разрад.

Адніманне

Каб у сістэме лічэння з асновай  атрымаць рознасць R двух лікаў A і  ( A > B), трэба вылічваць рознасці лічбаў, якія іх утвараюць, па разрадах ад малодшага да старэйшага па наступным правіле:

  1.  Каліai  ≥  bi, то ri = ai – bi, значэнне ў (i + 1 )-м разрадзе не змяняецца.
  2. Калі ai  <  bi, то ri = p + ai – bi, то значэнне ў (i + 1 )-разрадзе памяншаецца на 1. Пры гэтым, калі ai = 0, то займаем адну разрадную адзінку (роўную аснове сістэмы лічэння p) у (i + 1)-м разрадзе і працягваем займаць да бліжэйшага да i-га старшага разраду (уключна), дзе ai ≠ 0.

Прыклад 25.10. Знайсці рознасць лікаў 10002 и 112.

  1. У нулявым разрадзе: 0 < 1. Займаем у першым разрадзе. Паколькі ў двух наступных разрадах запісаны 0, то працягваем займаць да трэцяга разраду, дзе запісана 1. Атрымліваем  2 – 1 = 1 (102 – 12 = 12). У вынік запісваем 1.
  2. У першым разрадзе пасля таго, як занялі, засталося 1 (2(102) – 1). Аднімаем: 1 – 1 = 0. У вынік запісваем 0.
  3. У другім разрадзе засталося 1. Аднімаем: 1 – 0 = 1. У вынік запісваем  1.
  4. У трэцім разрадзе застаецца 0.

Прыклад 25.11. Знайсці рознасць лікаў 74508 і 7368.

  1. У нулявым разрадзе:  0 < 6. . Займаем у першым разрадзе 8(108). Аднімаем: 8 – 6 = 2. У вынік запісваем  2.
  2. У першым разрадзе засталося 4. Аднімаем: 4 – 3 = 1. У вынік запісваем  1.
  3. У другім разрадзе: 4 < 7. Займаем у трэцім разрадзе 8. Вылічваем: 8 + 4 – 7 = 5. У вынік запісваем 5.
  4. У трэцім разрадзе застаецца 6, што і запісваем у вынік.

У прыкладзе 25.12 разгледжана адніманне лікаў у шаснаццацярычнай сістэме лічэння, якое выконваецца па аналагічным алгарытме.

Множанне

Каб у сістэме лічэння з асновай p атрымаць здабытак М ліку A і ліку  B < p, трэба вылічыць здабытак лічбаў ліку А па разрадах ад малодшага да старшага і ліку В у адпаведнасці з правіламі:

  1. Каліai · b < p, то  mi = ai · b і значэнне ў (i + 1)-м разрадзе не змяняецца.
  2. Каліai · b < p, то  mi = ai · b modp, а значэнне ў ( i + 1 )-м разрадзе павялічваецца на  ai · b divp.

Прыклад 25.13. Знайсці здабытак лікаў 12123 і 23.

  1. Вылічваем: 2 · 2 = 4. Паколькі 4 ≥ 3, у вынік запісваем  4 mod 3 = 1. Значэнне ў першым разрадзе павялічваем на   4 div 3 = 1.
  2. Вылічваем: 1 · 2 + 1 = 3, 3 ≥ 3, значыць, у вынік запісваем 3 mod 3 = 0, а другі разрад павялічваем на 3 div 3 = 1.
  3. Вылічваем: 2 .  2 + 1 = 5. У вынік запісваем 5 mod 3 = 2. Трэці разрад павялічваем на 5 div 3 = 1.
  4. Паўтараем п. 2. У трэцім разрадзе выніку запісваем 0, а ў чацвёртым  — 1.

У прыкладах 25.14 і 25.15 па аналагічным алгарытме выканана множанне мнагазначнага ліку на адназначны лік у іншых сістэмах лічэння.

Множанне мнагазначнага ліку на мнагазначны лік выконваецца слупком. Пры гэтым два множнікі размяшчаюцца адзін пад адным так, каб разрады лікаў супадалі (знаходзіліся ў адным слупку).

У прыкладах 25.16 і 25.17 выканана множанне мнагазначнага ліку на мнагазначны лік.

*Дзяленне

Аперацыю дзялення нельга звесці да паразрадных аперацый над лічбамі, якія складаюць лік. Дзяленне лікаў у сістэме лічэння з адвольнай асновай p выконваецца гэтак жа, як і ў дзесятковай сістэме лічэння. А гэта значыць, што пры выкананні дзялення ўжываюцца правілы множання і аднімання лікаў у сістэме лічэння з асновай p. У адрозненне ад іншых арыфметычных дзеянняў дзяленне выконваецца, пачынаючы са старшага разраду дзялімага.

Прыклад 25.18. Знайсці дзель лікаў 1010102 і 1112.

  1. Параўноўваем значэнне ў самым старшым разрадзе і дзельнік. Калі дзельнік большы за значэнне ў дадзеным разрадзе, то разглядаем гэта значэнне і значэнне ў наступным разрадзе як лік. Паўтараем аперацыю да моманту, калі атрыманы лік зраўняецца або перавысіць значэнне дзельніка ( 1 <  111, 10 < 111, 101 < 111, 1010 > 111).
  2. Падбіраем такі лік (1), пры якім здабытак дзельніка і гэтага ліку (111) будзе максімальна блізкім па значэнні (але не большым) да ліку, атрыманага ў п. 1. Запісваем гэты лік у дзель першым.
  3. Аднімаем здабытак (п. 2) ад ліку, утворанага значэннямі выбраных разрадаў  (1010 – 111).
  4. Астачу пішам пасля рысы  (11).
  5. Зносім значэнне наступнага разраду да астачы (1) і правяраем, атрыманы лік (111) большы за дзельнік ці роўны яму. Калі не, то зносім значэнне яшчэ аднаго разраду да таго часу, пакуль не ўтворыцца лік, большы за дзельнік ці роўны яму, пры гэтым не забываем запісваць нулі ў дзель.
  6. Прарабляем усё вышэйпералічанае да таго часу, пакуль лічбы ў дзеліве не скончацца ці ў астачы не атрымаецца лік, меншы за дзельнік.

Прыклад 25.19. Знайсці дзель лікаў 33518 і 1638.

  1. Параўноўваем:1 <  163, 13 < 163, 133 < 163. 1335 > 163.
  2. Падбіраем: 6 · 163 = 1262 < 1335.
  3. Аднімаем: 1335 – 1262 = 53.
  4. Зносім 1 і атрымліваем  531 > 163.
  5. Падбіраем: 3 .  163 = 531.
  6. Аднімаем: 531 – 531 = 0.

Прыклад 25.20. Найти частное чисел 8D2F6C16 и DF16.

  1. Параўноўваем: 8 < DF, 8D < DF, 8D2 > DF.
  2. Падбіраем: А . DF = 8B6 < 8D2.
  3. Аднімаем: 8D2 – 8B6 = 1C.
  4. Зносім F і атрымліваем 1CF > DF.
  5. Падбіраем: 2 . DF = 1BE < 1CF.
  6. Аднімаем: 1CF – 1BE = 11.
  7. Зносім 6 і атрымліваем  116 > DF.
  8. Подбираем: 1 . DF = DF.
  9. Аднімаем: 116 – DF = 37.
  10. Зносім C і атрымліваем  37C > DF.
  11. Падбіраем: 4 . DF = 37C.
  12. Аднімаем: 37C – 37C = 0.

У камп’ютарных устройствах выкананне любога дзеяння заснавана на выкарыстанні найпрасцейшых мікрааперацый — складанне і зрух (аперацыя аднімання зводзіцца да аперацыі складання). Гэта дазваляе мець адзінае арыфметыка-лагічнае ўстройства для выканання аперацый, звязаных з апрацоўкай даных.

Прыклад 25.5. Правілы двайковай арыфметыкі.

1. Складанне.

2. Адніманне.

3. Множанне.

Прыклад 25.6. Складанне цэлых лікаў у двайковай сістэме лічэння.

11112 + 1012 = x2

Адказ: 101002

Прыклад 25.7. Складанне змешаных лікаў у двайковай сістэме лічэння.

101,10012 + 1,11112 = x2

Адказ: 111,12

Прыклад 25.8. Складанне лікаў у васьмярычнай сістэме лічэння.

63548 + 7438 = x8

Адказ: 73178

Прыклад 25.9. Складанне лікаў у шаснаццацярычнай сістэме лічэння.

5B416 + C5216 = x16

Адказ: 120616

Прыклад 25.10. Адніманне лікаў у двайковай сістэме лічэння.

10002 – 112 = x2

Адказ: 1012

Прыклад 25.11. Адніманне лікаў у васьмярычнай сістэме лічэння.

74508 – 7368 = x8

Адказ: 65128

Прыклад 25.12. Адніманне лікаў у шаснаццацярычнай сістэме лічэння.

21B116 – AFE16 = x16

Адказ: 16B316

Прыклад 25.13. Множанне мнагазначнага ліку на адназначны лік у трайковай сістэме лічэння.

12123 . 23 = x3

Адказ: 102013

Прыклад 25.14. Множанне мнагазначнага ліку на адназначны лік у васьмярычнай сістэме лічэння.

40328 . 78 = x8

Адказ: 342668

Прыклад 25.15. Множанне мнагазначнага ліку на адназначны лік у шаснаццацярычнай сістэме лічэння.

623216 . A16 = x16

Адказ: 3D60816

Прыклад 25.16. Множанне лікаў у двайковай сістэме лічэння.

101012 . 1012 = x2

Адказ: 11010012

Прыклад 25.17. Множанне лікаў у пятнаццацярычнай сістэме лічэння.

6AE15 . 3B15 = x15

Паразраднае множанне  на B:

B(11) . E(14) = 154 = 10 . 15 + 4;
B(11) . A(10) + 10 = 120 = 8 . 15 + 0;
B(11) . 6 + 8 = 74 = 4 . 15 + E(14).

Паразраднае множанне  на 3:

. E(14) = 42 = 2 . 15 + C(12);
. A(10) + 2 = 32 = 2 . 15 + 2;
. 6 + 2 = 20 = 1 . 15 + 5.

Паразраднае складанне:

4;
0 + C = C;
2 + E(14) = 16 = 1 . 15 + 1;
4 + 5 + 1 = A(10);
1.

Адказ: 1A1C415

Прыклад 25.18. Дзяленне лікаў у двайковай сістэме лічэння.

1010102 : 1112 = x2

Поразрядное вычитание:

[1]0 – 1 = 1;
[1]0 – 1 = 1;
1 – 1 = 0 – незначащий;
0  – незначащий.

Адказ: 1102

Прыклад 25.19. Дзяленне лікаў у васьмярычнай сістэме лічэння.

133518 : 1638 = x8

Поразрядное умножение на 6:

. 3 = 18 = 2 . 8 + 2;
. 6 + 2 = 38 = 4 . 8 + 6;
. 1 + 4 = 10 = 1 . 8 + 2.

Поразрядное вычитание:

5 – 2 = 3;
8 + 3 = 11; 11 – 6 = 5.

Зносім з наступнага разраду.
1.

Поразрядное умножение на 3:

. 3 = 9 = 1 . 8 + 1;
. 6 + 1 = 19 = 2 . 8 + 3;
. 1 + 2 = 5.

Адказ: 638

Прыклад 25.20. Дзяленне лікаў у шаснаццацярычнай сістэме лічэння.

8D2F6C16 : DF16 = x16

Паразраднае множанне  на A:

A(10) . F(15)  = 150 = 9 . 16 + 6;
A(10) . D(13)  + 9 = 139 = 8 . 16 + B(11).

Паразраднае адніманне (8D2 – 8B6):

[16]2 – 6 = 16 + 2 – 6 = C(12);
D(13) – 1 – B(11) = 1.

Паразраднае множанне  на 2:

. F(15) = 30 = 1 . 16 + E(14);
. D(13) + 1 = 27 = 1 . 16 + B(11).

Паразраднае адніманне  (1CF – 1BE):

F(15) – E(14) = 1;
C(12) – B(11) = 1;
1 – 1 = 0 – нязначны.

Паразраднае адніманне  (116 – DF):

[16]6 – F(15) = 16 + 6 – 15 = 7;
[16] – D(13) = 3.

Паразраднае множанне  на 4:

. F(15) = 60 = 3 . 16 + C(12);
. D(13) + 3 = 55 = 3 . 16 + 7.

Адказ: A21416