Изменения
викификация, оформление, орфография, стилевые правки
{{изолированная статья|сирота1}}
{{изолированная статья|сирота1}}
'''Дельта-код Элиаса ''' — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом.
'''Дельта-код Элиаса ''' — это [[универсальный код]] для кодирования положительных целых чисел, разработанный Питером Элиасом.
Для того, чтобы закодировать число:
Для того, чтобы закодировать число:
# Запишите его в двоичном виде.
# Записать его в двоичном виде.
# Посчитайти биты и запишите количество битов в двоичном виде (Х).
# Сосчитать биты и записать количество битов в двоичном виде (Х).
# Используйте двоичное значение, записанное в шаге 1 снова, удалите стоящий впереди бит и запишите оставшиеся биты (Y).
# Использовать двоичное значение, записанное в шаге 1 снова, удалить стоящий впереди бит и записать оставшиеся биты (Y).
# Присоедините второе двоичное значение (Y) к первому (X).
# Присоединить второе двоичное значение (Y) к первому (X).
# Посчитайте биты, написанные в шаге 2 (X), вычтите 1 из этого числа и добавьте в начало много нулей.
# Сосчитать биты, записанные в шаге 2 (X), вычесть 1 из этого числа и добавить в начало много нулей.
Аналогичным образом этот процесс можно описать так:
Аналогичным образом этот процесс можно описать так:
# Разделите целое число на самую большую степень 2, которую оно содержит (2N ' ), и оставшиеся N' двоичных цифр целого числа.
# Разделить целое число на самую большую степень 2, которую оно содержит (2<sup>N'</sup>), и оставшиеся N' двоичных цифр целого числа.
# Закодируйте N = N' + 1 с помощью Гамма кода Элиаса.
# Закодировать N = N' + 1 с помощью гамма-кода Элиаса.
# Добавьте оставшиеся N' двоичных цифр к представлению N.
# Добавить оставшиеся N' двоичных цифр к представлению N.
Начало кодирования:
Начало кодирования:
16 = 24 + 0 => N' = 4, N = 5 => 001010000 1/512
16 = 24 + 0 => N' = 4, N = 5 => 001010000 1/512
17 = 24 + 1 => N' = 4, N = 5 => 001010001 "
17 = 24 + 1 => N' = 4, N = 5 => 001010001 "
…
…
</source>
</source>
Чтобы декодировать число из Дельта-кода Элиаса:
Чтобы декодировать число из Дельта-кода Элиаса:
# Вычитайте и посчитайте ноли из потока, пока не доберетесь до первой единицы. Назовите число нолей L.
# Прочитать и сосчитать количество нулей из потока, пока не встретится 1. Пусть L — количество нулей.
# Учитывая, что единица, которая была достигнута – это первая цифра целого числа, значение которого 2L, прочитайте оставшиеся L цифр этого целого числа. Назовите это целое число N.
# Учитывая, что единица, которая была достигнута — это первая цифра целого числа, значение которого 2<sup>L</sup>, прочитать оставшиеся L цифр этого целого числа. Пусть N — прочитанное число.
# Поместите единицу на первое место конечного вывода, который представляет собой значение 2N-1. Вычитайте и добавьте следующие N-1 цифр.
# Поместить единицу на первое место конечного вывода, который представляет собой значение 2<sup>N</sup>-1. Прочитать и добавить следующие N-1 цифр.
Пример:
Пример:
001010001
001010001
# 2 ведущих ноля в 001.
# 2 ведущих ноля в 001.
# вычитайте 2 или более битов, т.e. 00101.
# вычитайте 2 или более битов, т.e. 00101.
# декодируйте N = 00101 = 5.
# декодируйте N = 00101 = 5.
# получим N' = 5 - 1 = 4 оставшихся бита для полного кода, т.e. '0001'.
# получим N' = 5 — 1 = 4 оставшихся бита для полного кода, т.e. '0001'.
# закодированное число = 24 + 1 = 17.
# закодированное число = 24 + 1 = 17.
Этот код может быть также применен к целым числам с нулевым или отрицательным значением таким же способом, которые был описан в статье о [[Гамма код Элиаса |Гамма-коде Элиаса]] .
Этот код может быть также применён к целым числам с нулевым или отрицательным значением (см.: [[гамма-код Элиаса]]).
== См. также ==
== См. также ==