Содержание

Четверичная система счисления

Что такое четверичная система?

Четверичная система счисления (Quaternary Base Number System, QBNS) — это позиционная система с основанием 4. В отличие от привычной десятичной системы, где используется десять цифр (0–9), в четверичной системе применяются всего четыре цифры: 0, 1, 2 и 3.

По аналогии с «байтом» (byte, 8 бит) и «найблом» (nybble, полубайт, 4 бита) четверичную цифру иногда называют «крамом» (crumb, 2 бита).

Принцип позиционности означает, что значение каждой цифры зависит от её места (разряда) в записи числа, то есть каждый крам является коэффициентом при четвёрке (основании системы) в степени соответствующего разряда (позиции в числе, считая справа-налево, начиная с нуля). Например, число `123_4` в четверичной системе расшифровывается как:

`123_4 = 1*4^2+2*4^1+3*4^0 =` `1*16+2*4+3*1 = 27_10`

Если что, десятичная система тоже позиционная, и в ней всё то же самое:

`123_10 = 1*10^2+2*10^1+3*10^0 =` `1*100+2*10+3*1 = 123_10` :)

От теории к практике

На первый взгляд может показаться, что система с основанием 4 — это лишь математическая абстракция, но оказывается, что она применяется не только в теоретических изысканиях и занимательной информатике, а находит неожиданное и вполне практическое применение в самых разных областях, от лингвистики до передовых цифровых технологий.

Для начала немного истории.

Исторические примеры

В Древней Бактрии была письменность «кхароштхи», заимствованная из арамейского письма ещё в I тысячелетии до н.э. и использовавшаяся местами почти до VII века н.э. В ней числительные представляли собой частичную четверичную систему счисления: были цифры 1, 2, 3, 4, а отдельных знаков для цифр 5–9 не было вообще (зато были 10, 20, 100 и 1000). Числа «набирались» как у римлян, но записывались справа налево и не было правила вычитания, только сложение.

К примеру, число 1996 записывалось вот так: 𐩇𐩃𐩃𐩀𐩆𐩅𐩅𐩅𐩅𐩄𐩃𐩁.

Следы четверичной системы встречаются не только на территории Азии, её присутствие обнаружено и в некоторых языках коренных народов Северной Америки, в частности в чумашских языках.

Петроглифы индейцев чумаш

Речь о записях Фрая (отца) Хуана де ла Круса (Juan de la Cruz). Примерно в 1819 году, во время работы в католической миссии Сан-Буэнавентура (от которой и получил название диалект), он составил один из первых словарей языка вентуреño. В нём он привёл числительные вплоть до 32. Базовыми «кирпичиками» для счёта были 4, 8 и 16 (которое само является 4×4), остальные числа строились комбинаторно сложением и повторением (с применением чисел 1 и 2 как показателя):

То есть в языке не было единой цепочки вроде «десять, двадцать, тридцать», как в десятичной системе. Вместо этого счёт шёл блоками по 4, иногда применялся кирпичик 8, а 16 выступало как более крупный «шаг». Похоже, что следующим крупным шагом могло быть 256 (16×16), но история об этом умалчивает.

На самом деле, мне это напоминает скорее не четверичную систему, а начало более логичной системы, построенной на степенях двойки: `2^0, 2^1, 2^2, 2^3, 2^4 = 1, 2, 4, 8, 16`. В любом случае, система (или дошедшее до нас её описание) хотя и была какая-то очень урезанная, но четвёрка в ней имела очень важное значение.

Эти примеры показывают, что основа 4 для счёта не является каким-то искусственным изобретением, а представляет собой естественный способ мышления и счёта, возникавший в разных культурах по всему миру независимо от десятичной системы, к которой мы привыкли.

Связь с двоичной и шестнадцатеричной системами счисления

Как и восьмеричная и шестнадцатеричная системы счисления, четверичная имеет особое отношение к двоичной системе счисления. Основания этих систем (4, 8 и 16) являются степенями двойки, поэтому преобразование в двоичную систему и обратно осуществляется путем сопоставления каждой цифры с двумя, тремя или четырьмя битами (двоичными цифрами 0 или 1). Например, в четверичной системе счисления каждую четверичную цифру можно представить двумя битами: 2302104 = 10 11 00 10 01 002.

Восьмеричная и шестнадцатеричная системы счисления широко используются в вычислительной технике и компьютерном программировании при обсуждении и анализе двоичной арифметики и логики. Но вот четверичная система не пользуется такой же популярностью. Некоторые апологеты четверичной системы говорят, что она может оказаться полезной, если требуется выполнить арифметические действия с шестнадцатеричными числами без калькулятора.

Как видно на табличке выше, каждую шестнадцатеричную цифру можно представить в виде двузначного четверичного числа. Затем после такого преобразования можно относительно легко выполнить арифметические действия в четверичной системе, а после преобразовать конечный результат обратно в шестнадцатеричную систему счисления. Четверичная система счисления удобна для этой цели, поскольку длина чисел в ней в два раза меньше, чем в двоичной системе, при этом таблицы умножения и сложения содержат всего три уникальных нетривиальных элемента.

Четверичные таблицы сложения и умножения:

Поскольку 16 — это 42, преобразование между этими системами счисления можно осуществить путем сопоставления каждой шестнадцатеричной цифры с двумя четверичными. В приведенном выше примере: B2416 = 23 02 104.

Давайте попробуем сравнить, что удобнее использовать в промежутке – десятеричную систему или четверичную.

Например, нужно сложить `1E6_16+B24_16=?` Вначале все шестнадцатеричные цифры переведём в десятичные числа, затем сложим их в столбик поразрядно справа налево. Перенос делаем, если результат >15.

То есть видим обычное сложение в столбик. Дополнительно перед глазами, если не помним, держим перекодировочную таблицу для ABCDEF. А теперь попробуем сделать всё то же самое, но используя в качестве промежуточной системы четверичную. Точно так же переводим в четверичные, считаем в столбик, переносим, если результат получился больше двух четверичных цифр, то есть >33.

В принципе, всё то же самое, количество шагов то же, вот только легче ли? Давайте посмотрим на 5-й шаг. Что легче воспринимается `1+1+11=13_10` или `1+1+23=31_4`? По мне так первое, потому что с детства нас учили десятичной системе, и считаем мы на автопилоте именно в ней. И то, что после 11 идёт 12 и 13 – это знает каждый ребёнок. А вот то, что в четверичной системе после 23 идёт 30 и 31 наш мозг на автопилоте не выдаёт, поэтому `1+1+23 = 31` вообще ни капли не очевидно. Приходится в момент расчёта «тормозить» и переключать мышление на четверичную систему, а это может вызвать определённые трудности.

По-моему, использовать для сложения шестнадцатеричных чисел в качестве промежуточной четверичную систему выглядит мягко говоря «высосанным из пальца», ведь проще и привычнее обойтись десятичной.

Теперь попробуем посчитать «в столбик» умножение `1A_16 * 2B_16 = ?`. Вначале используем промежуточную десятичную систему.

А теперь всё то же самое, но проводим промежуточные вычисления в четверичной системе. Мне кажется, я сломаю мозг сейчас… Держим перед глазами «перекодировочную» таблицу и таблицы сложения и умножения:

  1. Разряд 0: `2+0+0=2` → пишем `2`.
  2. Разряд 1: `3+0+0=3` → пишем `3`.
  3. Разряд 2: `0+1+0=1` → пишем `1`.
  4. Разряд 3: `1+3+1=5`. `5=11_4`, пишем `1`, переносим `1`.
  5. Разряд 4: `0+0+3+1`(перенос)`=4`. `4=10_4`, пишем `0`, переносим `1`.
  6. Разряд 5: только перенос `1` → пишем `1`.

Ну и что, легче использовать четверичную по сравнению с десятеричной? Скажу так: да, можно конечно и складывать и умножать шестнадцатеричные числа через четверичную как промежуточную систему — это работает, потому что `16=4^2`. Но на практике это очень неудобно и ни капли не легче: легко можно лишь ошибиться в переносах, да и считать намного дольше, чем просто в шестнадцатеричной или через десятичную, а потому и тут больше места для ошибок. Поэтому для обычных расчётов (особенно на бумажке) люди четверичную систему не используют. И я не советую :)

Кстати, когда мы делаем сдвиг в десятичной системе (с приписыванием нолика), то получаем последовательность `10, 100, 1000, 10000`, потому что это `10^1, 10^2, 10^3, 10^4`. То есть сдвиг на n разрядов в десятичной системе эквивалентен умножению на `10^n`. А если мы сдвигаем в четверичной системе, то получаем последовательность `4^n`: `4, 16, 64, 256`. Но если записать эти числа в четверичной системе, то получим те же `10_4, 100_4, 1000_4, 10000_4`. Потому что, к примеру, `64_10 = ①*4^3+⓪*4^2+⓪*4^1+⓪*4^0 = 1000_4`. Красиво? Да. А ещё `4_10 = 10_4`! Вот для таких «штучек» четверичную систему и можно применять :)

Современные технологические применения

И всё же люди нашли применение четверичной системе. Чаще всего она используется, причём как довольно эффективный инструмент, для упаковки и обработки информации, которую по своей природе удобно представить в виде четырех состояний. Наиболее значительное применение четверичной системы в современном мире связано с цифровыми технологиями, где она предлагает преимущества перед классической двоичной системой.

Четверичные коды в телекоммуникациях

В передаче данных используются четвертичные линейные коды, такие как 2B1Q (2 Binary, 1 Quaternary), применяемые в стандарте ISDN (цифровые телефонные сети) и в гигабитных Ethernet-сетях. Суть этого подхода в том, что сигнал может принимать не два состояния (0 и 1), а четыре. Это позволяет передавать два бита информации за один такт, фактически удваивая скорость передачи данных без увеличения частоты сигнала.

Современные исследования предлагают и более изощрённые методы: например, использование не только уровней сигнала, но и формы импульса (нарастающий или спадающий фронт) для кодирования четверичных цифр, что также повышает скорость передачи.

Обработка сигналов и цифровая электроника

В области цифровой обработки сигналов давно и активно исследуются фильтры на основе четверичной системы счисления. Исследования показывают, что такие фильтры обладают рядом преимуществ:

Такие фильтры находят применение в обработке аудио и видео, беспроводной связи, биомедицинской обработке сигналов, системах управления. В целом, это скорее нишевые, но перспективные области: там, где критичны скорость, плотность и энергоэффективность, исследователи продолжают искать оптимальные комбинации.

Связь с генетикой

Четверичная система неожиданным образом связана с молекулярной биологией. ДНК состоит из четырёх типов нуклеотидов: Аденин (A), Цитозин (C), Гуанин (G) и Тимин (T). По сути, генетический код представляет собой естественную четверичную систему.

Эта аналогия позволяет:

Компьютерная графика

Даже в такой области, как компьютерная графика, находится место четверичной системе. Она лежит в основе построения кривых Гильберта — особых линий, которые заполняют двумерное пространство. Каждая цифра в четверичной записи числа указывает на один из четырёх подквадратов, куда нужно перейти, что позволяет эффективно отображать и обрабатывать двумерные данные.

Почему четверичная система не стала популярной?

Несмотря на удобство перевода в двоичную систему, четвертичная система не получила широкого распространения в вычислениях по нескольким причинам:

Занимательная четверичная система

Здесь я попробую рассказать о том, как можно применять четверичную систему в играх и головоломках. Однажды я уже писал о том, как можно применить четверичную систему счисления для шифрования: Четверичный шифр.

Существуют игры и головоломки, которые используют принципы четверичной системы счисления (QBNS). Чаще всего это проявляется в двух форматах: как тематические образовательные игры и как головоломки, где система счисления является не просто темой, а ключом к решению.

Вот несколько конкретных примеров.

🧩 Головоломки, где QBNS — ключ к решению

В этом типе игр четверичная система выступает как скрытый механизм, который нужно понять, чтобы пройти уровень.

🎮 Обучающие игры и симуляторы

Эти игры созданы с целью познакомить игрока с разными системами счисления в игровой форме.

Подводя итог, в отличие от прямого инженерного применения (как в телекоммуникациях), в играх четверичная система используется как интеллектуальный вызов, делая процесс решения задач более сложным и интересным. Она может быть:

"Четверные" игры

Есть целый пласт игр, которые формально используют некую «четверную» технологию, хотя никакого отношения именно к четверичной системе счисления это не имеет. Например, игры, которые рассчитаны на четверых игроков и имеющие соответственно 4 типа игровых элементов разного цвета 🔴🟢🟡🔵:

Есть игры, рассчитанные на любое число игроков, но тем не менее с четырьмя типами игровых элементов, например карточные игры с классическими четырьмя мастями ♠️♥️♣️♦️:

Шифрование

Однажды, разглядывая логотип известной операционной системы, мне пришла в голову мысль сделать на базе этого шифр. Получился настоящий "четверичный" шифр, в котором каждому краму соответствует своё уникальное графическое представление 🟥🟦🟨🟩, четверичные числа получаются в виде цветных квадратиков, как мозаика, а зашифрованный текст выглядит вот так:

Попробуйте расшифровать, используя эти кодировочные таблицы:

Заключение

Четверичная система счисления — это не просто абстрактная концепция из курса информатики, но мощный и гибкий инструмент, который:

Несмотря на то, что система не получила широкого распространения, она продолжает оставаться актуальной, находя новые области применения на стыке математики, биологии и современных цифровых технологий. Её изучение даёт не только теоретические знания о системах счисления, но и понимание того, как фундаментальные математические принципы могут находить практическое воплощение в самых разных сферах человеческой деятельности – от анализа ДНК до проектирования быстрых микросхем.

Ссылки