Позиционные системы счисления
Позиционное представление
Позиционное представление (positional notation) числа по основанию — способ представить число в виде суммы
Например, число .
Позиционное представление, вопреки школьному запрету, может существовать для любых действительных оснований. Числа называются цифрами в этой системе счисления, и для всех них всегда верно неравенство . Это гарантирует единственность позиционного представления.
Из позиционного представления неотрицательного числа можно сразу выделить значение произвольного
Перевод
Между представлением чисел в системах счисления по основанию и по основанию есть простая связь
Для перевода из десятичной системы счисления нужно последовательно делить с остатком целую часть числа на основание системы , а дробную часть умножать на . Возьмём число и представим его в шестнадцатеричной системе счисления:
Зписываем остатки от деления целой части в обратном порядке, а целые части от умножения дробной — в прямом и получаем
Этот алгоритм на псевдокоде:
function convert_to(int num, int base) -> string:
table[char] chars = ['0', ..., '9', 'A', ..., 'Z']
string ans = ""
do:
ans = chars[num % base] + ans
num /= base
while num > 0
return ansИзмерение информации
Количество разрядов в -ричном представлении числа N вычисляется по следующей формуле:
Домножив результат на основание, мы получим цену представления числа в -ричной системе счисления.
Чем меньше значение E — тем оптимальнее основание для представления числа. С увеличением оптимальное основание будет меняться.
Отрицательное основание
Мы привыкли к системам счисления с натуральными основаниями , но ничто не мешает нам взять за основание и отрицательное число, это называется нега-позиционной системой счисления. Например, число с основанием будет выглядеть так:
Несложно заметить, что на каждом чётном разряде множитель положительный, а на каждом нечётном — отрицательный. Благодаря этому в нега-позиционной системе счисления можно беззнаково представить как положительное так и отрицательное число.
Перевод из десятичной в нега-позиционную систему счисления работает точно так же, как и в системах с натуральным основанием.
Сложение в столбик в нега-позиционных системах счисления происходит так же, как и в привычных нам, но с одним нюансом. Если при сложении в каком-то разряде получается число большее или равное основанию, то в разряд записывается число единиц, а из левого разряда вычитается .
Если старшего разряда разряда нет, то слева приписывается и максимальная цифра системы счисления.
Для вычитания аналогично.
Нега-позиционная система счисления с основанием использовалась в польских электронно-вычислительных машинах 50-х годов: SKRZAT 1 и BINEG.
Симметричные системы счисления
Пожалуй, одной из самых известных систем счисления является симметрично-троичная, то есть использующая цифры , и вместо , и . Обозначим как . Такая система счисления имеет несколько примечательных свойств:
Обратное по сложению число можно получить взаимной заменой и
Знак числа определяется знаком старшего разряда
Для округления до ближайшего целого нужно просто отбросить дробную часть
Для перевода числа в симметрично-троичную систему счисления нужно сначала перевести его в троичную, добавить к нему число, состоящее из бесконечного количества единиц, и уменьшить каждую цифру на единицу.
Если при сложении разряд переполняется, то в него записывается , а к левому добавляется .
В остальном арифметические операции в симметрично-троичной системе ничем не отличаются от стандартных.
В сороковых годах прошлого века, когда первые компьютеры были только в разработке, симметричная троичная система наравне с двоичной рассматривалась как альтернатива десятичной. Электронные схемы для троичной логики не сильно сложнее двоичной, зато для представления числа количество разрядов равно , то есть примерно от количества разрядов для этого же числа в двоичной. Симметрично-троичная система счисления испоьлзовалась в советсвкой вычислительной машине СЕТУНЬ.
Рациональное основание
Если взять за основание рациональное число , а как цифры все числа меньше , то получится система, поздоляющая представлять дроби с высокой точностью, что может быть критически важно во многих ситуациях, например, при сжатии данных.
Иррациональное основание
Иррациональное основание системы счисления позволяет записывать бесконечные дроби конечным количеством знаков без потери точности, а так же применять различные свойства так часто используемых в математике констант. Многие такие системы являются избыточными, то есть количество цифр в них больше основания. Рассмотрим несколько примечательных иррациональных оснований:
Корневое основание
Такие основания позволяют представлять числа из расширения поля . В системе с основанием равным корню -той степени кажый -тый разряд обозначает натуральное число, остальные — иррациональные. Применение этому можно найти в геометрии. Например, диагональ квдарата со стороной равна , а площадь правильного восьмиугольника c единичной стороной равняется .
Если при сложении в разряде получается число , то единица добавляется к -му разряду слева.
Система Бергмана
Придуманная американским математиком Джорджом Бергманом система (также называемая фиеричной) в кажестве основания использует число . Напомню, что
Из этого следует очень интересное свойство такой системы счисления:
Система Бергмана позволяет записать любое натуральное число конечным количеством цифр, причём для всех, кроме единицы, в записи будут цифры после запятой и при этом в ней не будет двух идущих подряд единиц.
Перевод из десятичного основания в фиеричное также довольно экзотичен. Зная запись числа , можно выразить таким образом: если нулевой разряд в равен нулю, то прибаляем единицу и нормализуем запись, то есть избавляемся от повторяющихся единиц вышеуказанным свойством. Если же в нулевом разряде находится единица, то нужно денормализовать число так, чтобы нулевой разряд стал нулём, а потом выполнить предыдущий шаг.
Из-за того, что используемое всё время до этого сложение в столбик с переносом разрядов попросту не работает. Алгоритм суммирования здесь следующий: нужно суммировать числа, не перенося разряды, а после этого результат разбивать на другую сумму, денормализовывать, снова суммировать и приводить к нормальному виду.
Умножение в системе счисления Бергмана рабоатет точно так же, как и в двоичной.
Фиеричная система счисления может быть полезна в вычислениях, связанных с золотым сечением.
Основание
Используя число Эйлера как основание системы, мы не сможем записывать натуральные числа конечным количеством цифр, зато такая система будет иметь высокую точность в операциях с иррациональными числами. Из формулы цены представления числа в системе с основанием
следует, что основание является самым экономичным, то есть использует оптимальное количество цифр относительно длины числа.
Перевод в -ричную систему счисления осуществляется так же, как и в систему с натуральным основанием. Единственное отличие — это необходимость заранее определить точность, чтобы иметь возможность получить остаток от деления на иррациональное число.
Мнимое и комплексное основания
Рассмотрим мнимочетверичную систему счисления, то есть с основанием :
Здесь чётные разряды представляют вещественные числа, а нечётные — мнимые. Таким образом системы счисления с мнимым основанием позволяют записывать комплексные числа цельно, не раскладывая их на сумму действительной и мнимой частей. Количество цифр в такой системе счисления равно .
В системах счисления с комплексным основанием на чётных позициях так же находятся вещественные числа, а на начётных — комплексные.
Такие системы счисления позволяют умножать и делить комплексные числа так же, как и при любом другом основании, но при этом нужно соблюдать следующие правила переноса: если цифра становится , прибавить и перенесётся на два разряда влево, если цифра отрицательна, то вычитается основание системы в квадрате, а переносится.
Смешанные системы счисления
Смешанные системы счисления в общем виде имеют следующий вид:
Выглядит страшно, но на самом деле смешанными системами счисления мы пользуемся каждый день. Например, "2 недели, 5 дней, 13 часов, 45 минут, 3 секунды и 492 миллисекунды" можно записать как
Факториальная система счисления
Очень примечателльной смешанной системой является факториальная, где . Она позволяет представить любое натуральное число в виде
Перевод из десятичной системы в систему с факториальным образом похож на перевод в систему с натуральным основанием, но сначала мы делим на , потом на , потом на и так далее. В качестве примера переведём число 418:
Эта система счисления может пригодиться в комбинаторике при подсчёте количесва перестановок, размещений и сочетаний.
Система счисления Фибоначчи
Другой широко используемой смешанной системой является фибониччиева, в её основе лежат числа Фибоначии, то есть , а каждый разряд равен нулю или единице, так как любое натуральное число можно выразить суммой чисел Фибоначчи. Из-за того, что здесь (как и в фиеричной системе) не встречаются две единицы подряд. Такая система счисления очень полезна в жадных алгоритмах.