Top.Mail.Ru
Ответы

Объясните формулу связанную с системой счисления

По дате
По рейтингу
Аватар пользователя
Гений

Приведённая формула выглядит странно. Всё намного проще:

1
 Nₖ = ⌈Pₖ₊₁/Pₖ⌉ 

Если Pₖ₊₁ делится на Pₖ, то ⌈Pₖ₊₁/Pₖ⌉ в точности равно Pₖ₊₁/Pₖ. А если не делится, результат деления округляется вверх. И это не зависит от того, есть в системе основание или его нет.

Возьмём обычную десятичную систему счисления. В ней для любого k:

1
 Pₖ₊₁/Pₖ = 10 (P₀ = 1, P₁ = 10, P₂ = 100 и т.д.) 

Соответственно, каждый разряд может содержать одно из 10 значений: от 0 до 9 включительно.

Возьмём факториальную систему счисления. В ней:

1
 Pₖ₊₁/Pₖ = k + 2 (т.к. P₀ = 1! = 1, P₁ = 2! = 2, P₂ = 3! = 6 и т.д.) 

Т.е. разряд с номером k может содержать одно из k + 2 значений: от 0 до k + 1 включительно.

Это обеспечивает возможность записи любых чисел и единственность представления каждого числа.

В десятичной системе счисления число 9999 представляется в виде: 9*1 + 9*10 + 9*100 + 9*1000 и никак иначе.

В факториальной системе число 119 записывается в виде 1*1! + 2*2! + 3*3! + 4*4!, а число 120 - это уже 0*1! + 0*2! + 0!*3! + 0!*4! + 1*5!. И по другому ты эти числа никак не запишешь.

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

Например, возьмём в качестве базиса числа Фибоначчи:

1
 P₀ = Fib(2) = 1, P₁ = Fib(3) = 2, P₂ = Fib(4) = 3, P₃ = Fib(5) = 5 и т.д. 

В этом случае Pₖ₊₁ не делится на Pₖ (за исключением P₁ / P₀) и для любых k:

1
 1 < Pₖ₊₁/Pₖ ≤ 2 

Следовательно, для любых k:

1
 ⌈Pₖ₊₁/Pₖ⌉ = 2 

И любой разряд в записи числа может принимать 2 значения: 0 или 1.

Аватар пользователя
Оракул

"это понять нельзя, это надо запомнить"(ц)

Аватар пользователя
Знаток

это скорее двоичная сс



Видео по теме