Skip to main content
LibreTexts - Ukrayinska

2.4: Коди фіксованої довжини і змінної довжини

  • Page ID
    29864
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)

    Рішення, яке повинно бути прийнято дуже рано в розробці коду, полягає в тому, чи представляти всі символи кодами однакової кількості бітів (фіксованої довжини) або дозволити деяким символам використовувати коротші коди, ніж інші (змінна довжина). Є переваги у обох схем.

    Коди фіксованої довжини, як правило, легше мати справу, оскільки і кодер, і декодер заздалегідь знають, скільки бітів задіяно, і це лише питання встановлення або читання значень. При кодах змінної довжини декодеру потрібен спосіб визначити, коли закінчується код для одного символу, а починається наступний.

    Коди фіксованої довжини можуть підтримуватися паралельною передачею, в якій біти передаються від кодера до декодера одночасно, наприклад, за допомогою декількох проводів для перенесення напруг. Цей підхід повинен контрастувати з послідовним транспортом закодованої інформації, при якому один провід посилає потік бітів, а декодер повинен вирішити, коли закінчуються біти для одного символу, а біти для наступного символу починаються. Якщо декодер змішується або дивиться на потік бітів після його запуску, він може не знати. Це називається «помилкою кадрування». Щоб усунути помилки кадрування, стоп-біти часто надсилаються між символами; зазвичай ASCII, що надсилається по послідовних лініях, має 1 або 2 стоп-біти, зазвичай враховуючи значення 0. Таким чином, якщо декодер знаходиться поза кроком, він врешті-решт знайде 1 в тому, що він припускав, що повинен бути стоп-бітом, і він може спробувати повторно синхронізувати. Хоча теоретично помилки обрамлення можуть зберігатися протягом тривалого періоду часу, на практиці використання стоп-бітів працює добре.