Перейти до основного вмісту

Збалансована трійкова система числення

"Комп'ютер «Сетунь», що використовує збалансовану трійкову систему"

Це нестандартна, але все ж позиційна система числення. Її особливість у тому, що цифри можуть набувати одного зі значень -1, 0 та 1. Попри це, її основа все одно дорівнює 3 (бо можливих значень три). Оскільки записувати -1 однією цифрою незручно, далі для цього ми вживатимемо літеру Z. Якщо ви вважаєте, що ця система доволі дивна — погляньте на світлину: ось один із комп'ютерів, що її застосовує.

Отже, ось кілька перших чисел, записаних у збалансованій трійковій системі:

0 0
1 1
2 1Z
3 10
4 11
5 1ZZ
6 1Z0
7 1Z1
8 10Z
9 100

Ця система дозволяє записувати від'ємні значення без ведучого знака мінус: достатньо просто інвертувати цифри будь-якого додатного числа.

-1 Z
-2 Z1
-3 Z0
-4 ZZ
-5 Z11

Зауважимо, що від'ємне число починається з Z, а додатне — з 1.

Алгоритм переведення

Подати задане число у збалансованій трійковій системі легко, спершу тимчасово подавши його у звичайній трійковій системі числення. Коли значення записане у стандартній трійковій системі, його цифри дорівнюють 0, 1 або 2. Ідучи від наймолодшої цифри, ми можемо спокійно пропускати будь-які 0 та 1, проте 2 слід перетворити на Z, додавши 1 до наступної цифри. Цифри 3 слід перетворювати на 0 за тими самими правилами — таких цифр спочатку в числі немає, але вони можуть з'явитися після збільшення деяких 2.

Приклад 1: Переведімо 64 у збалансовану трійкову систему. Спершу перепишемо число у звичайній трійковій системі:

6410=02101364_{10} = 02101_{3}

Обробляймо його, починаючи з наймолодшої (найправішої) цифри:

  • 1, 0 та 1 лишаємо без змін (бо 0 і 1 дозволені у збалансованій трійковій системі).
  • 2 перетворюється на Z, збільшуючи цифру ліворуч від неї, тож отримуємо 1Z101.

Остаточний результат — 1Z101.

Переведімо його назад у десяткову систему, додавши зважені позиційні значення:

1Z101=811+27(1)+91+30+11=64101Z101 = 81 \cdot 1 + 27 \cdot (-1) + 9 \cdot 1 + 3 \cdot 0 + 1 \cdot 1 = 64_{10}

Приклад 2: Переведімо 237 у збалансовану трійкову систему. Спершу перепишемо число у звичайній трійковій системі:

23710=222103237_{10} = 22210_{3}

Обробляймо його, починаючи з наймолодшої (найправішої) цифри:

  • 0 та 1 лишаємо без змін (бо 0 і 1 дозволені у збалансованій трійковій системі).
  • 2 перетворюється на Z, збільшуючи цифру ліворуч від неї, тож отримуємо 23Z10.
  • 3 перетворюється на 0, збільшуючи цифру ліворуч від неї, тож отримуємо 30Z10.
  • 3 перетворюється на 0, збільшуючи цифру ліворуч від неї (яка за замовчуванням дорівнює 0), тож отримуємо 100Z10.

Остаточний результат — 100Z10.

Переведімо його назад у десяткову систему, додавши зважені позиційні значення:

100Z10=2431+810+270+9(1)+31+10=23710100Z10 = 243 \cdot 1 + 81 \cdot 0 + 27 \cdot 0 + 9 \cdot (-1) + 3 \cdot 1 + 1 \cdot 0 = 237_{10}

Задачі для практики