1. Используя алгоритм RLE, закодируйте последовательность символов

BBBBBBACCCABBBBBB

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

Ответы

Ответ дал: valgrisa
1

Ответ:

86 42 01 41 83 43 01 41 86 42

Объяснение:

BBBBBBACCCABBBBBB

1) ищем цепочки (упакованная последовательность содержит управляющие байты, за каждым управляющим байтом следует один или несколько байтов данных)

6В 1А 3С 1А 6В

2) кодируем управляющие байты

  • если следующий за управляющим байт данных при распаковке нужно повторить, то в старший бит управляющего байта записывается 1, а в оставшихся 7 битах управляющего байта сколько раз нужно повторить байт данных
  • если следующий за управляющим один или несколько байтов данных данных при распаковке повторять не нужно, то в старший бит управляющего байта записывается 0, а в оставшихся 7 битах управляющего байта сколько следующих байтов данных надо взять без изменения

6 - количество повторов символа (В - символ)

6₁₀ = 110₂

дополняем до байта 0 слева

00000110

заменяем старший бит на 1, т.к. надо повторять

10000110

разбиваем на тетрады (для перевода в 16 систему счисления)

\left\begin{array}{ccc}1000& 0110\\8&6\end{array}\right

86 B

1A

1 - количество повторов символа, т.е. символ не повторяется, а встречается 1 раз (А - символ)

1₁₀ = 1₂

дополняем до байта 0 слева

00000001

оставляем старший бит 0, т.к. символ не повторяется, а после него идёт повтор (3С)

00000001

разбиваем на тетрады (для перевода в 16 систему счисления)

\left\begin{array}{ccc}0000& 0001\\0&1\end{array}\right

01 А

3 - количество повторов символа (С - символ)

3₁₀ = 11₂

дополняем до байта 0 слева

00000011

заменяем старший бит на 1, т.к. надо повторять

10000011

разбиваем на тетрады (для перевода в 16 систему счисления)

\left\begin{array}{ccc}1000& 0011\\8&3\end{array}\right

83 B

потом повторяется 2 и 1 цепочки:

1A → 01 А

6В → 86 B

3) кодируем байты данных

  • для определения шестнадцатеричных кодов символов используем таблицу ASCII (скрин 1)
  • в первом столбце записана первая цифра шестнадцатеричного кода символа
  • в первой строке записана вторая цифра шестнадцатеричного кода символа

код большой (прописной) латинской буквы «А» с помощью шестнадцатеричных цифр можно записать как 41

код большой (прописной) латинской буквы «В» с помощью шестнадцатеричных цифр можно записать как 42

код большой (прописной) латинской буквы «С» с помощью шестнадцатеричных цифр можно записать как 43

4) собираем всё вместе:

\left\begin{array}{cccccccccc}6&B &1&A &3&C&1&A& 6&B\\86&42 &01&41 &83&43&01&41& 86&42\end{array}\right

Приложения:

586rf: https://vk.me/club166948584?ref=585054113&ref_source=video тут не праильный ответ переходите по ссылке там я оставил правельный
Вас заинтересует
11 месяцев назад