я системи порівнянь дозволяв китайським генералам перераховувати армію без особливих зусиль послідовністю однотипних розпоряджень.
Наприклад:
У колону по 7 ставай!
За виконанні команди, підраховувалася кількість солдатів, що стоять в останньому ряду. Потім вироблялися аналогічні підрахунки за результатами виконання команд:
У колону по 11 ставай!
У колону по 13 ставай!
У колону по 17 ставай!
У відповідності з властивостями системи залишкових класів, за чотирма залишкам однозначно відновлюється число солдатів, якщо воно не перевершує 17017. [10] Розглянемо тепер перетворення чисел з однієї СС в іншу. Це знадобиться надалі, при розробці програми. По-суті, перетворення чисел - це головна операція для різних ССЧ. З її допомогою здійснюється взаємодія однієї системи з іншого.
Отже, будь-яке число в будь позиційній системі числення можна представити за формулою:
,
де a0, a1, ..., ak - цифри, а q - основа системи числення.
Наприклад:
і т. д.
Щоб перевести число з СС з великою підставою в СС з меншим підставою M потрібно:
1. Розділити число без остачі на M, залишок дорівнює a 0.
. Взяти приватне і проробити з те ж саме, залишок буде дорівнює a 1.
. Повторно проробляти всі операції, поки приватне не буде дорівнює 0.
. Шукане число буде записано в новій системі числення отриманими цифрами.
Наприклад:
10 - gt; 11001 20=1 (25/2=12) 1=0 (12/2=6) 2=0 (6/2=3) 3=1 (3/2 =1)
a 4=1 (1/2=0)
Для переведення числа з меншої основи в більшу застосовується формула:
,
де q - нова підстава, aq, k - цифри старої СС в новій СС, m - основу старої системи числення.
Якщо основа однієї системи - ступінь іншого, наприклад, 2 і 16, то переклад можна робити на підставі таблиці. Для вісімковій використовуються тріади. Для шістнадцятковій використовуються тетради (табл. 3).
На основі таблиці можна побудувати правило для десяткової СС, де число представляється у вигляді суми двох тетрад.
Перейдемо тепер до негативним і дробовим числам.
У негативних числах модуль числа не змінюється при переході до іншої СС. Потрібно запам'ятати знак, потім застосувати описаний вище метод, потім знову поставити знак.
Десяткові дроби потрібно лише помножити на таке число, яке перенесе кому в кінець.
Таблиця 3. Представлення чисел у вигляді тріад і тетрад
q=2q=8q=10q=16000011111022211333100444101555110666111777100010881001119910101210A10111311B11001412C11011513D11101614E11111715F
Наприклад, перенесення в троїчному числі коми з 4-го місця від кінця - той же, що і помножити його на 34.
Потім потрібно перевести число в нову СС з позитивними числами і поділити на цей множник вийшла дріб. Після даної процедури може вийти періодичний дріб. Наприклад, в 3-чной системі 1/3=0.1, а в десятковій - 0, (3).
Далі, для правильних дробів існує наступне правило.
Нехай X - правильна дріб, задана в 10-чной системі числення і потрібно перевести її в систему числення з основою Q, тобто знайти цифри bi для запису X.
Для визначення bi помножимо ліву і праву частини рівності на Q, причому в лівій частині множення виконується за правилами 10-чной арифметики. Маємо:
Уявімо ліву частину рівності як суму цілої і дробової частин:
Дорівняємо їх з цілої і дробової частинами правій частині рівності:
Цифра b 1 є цілою частиною від множення X на Q (множення виконується в 10-чной системі числення). Далі покладемо X 1=X * Q і повторимо аналогічні дії для визначення цифри b 2.
У підсумку отримуємо, що переведення правильного дробу X здійснюється за такими рекурентним формулами:
b i + 1=[X i * Q]. i + 1={X i * Q}, i=0, 1, 2, ...;
Процес продовжується до тих пір, поки не буде отримано X i + 1=0 або що не отримана необхідна точність (необхідну кількість цифр після коми).
На основі вищесказаного, можна зробити висновок про те, що операція переведення чисел з однієї ССЧ в іншу досить проста. Однак, існують певні складнощі при знаходженні дробової частини числа, тобто, спочатку просто невідомо, чи вийде точне число або ж вийде періодична дріб. Це можна визначити лише після початку операції, визначивши закономірності в залишках...