1. Используя алгоритм RLE, закодируйте последовательность символов
BBBBBBACCCABBBBBB
Запишите результат в виде шестнадцатеричных кодов (каждый символ кодируется в виде байта, который представлен двумя шестнадцатеричными цифрами ). Проверьте полученный результат с помощью программы RLE.
Answers & Comments
Ответ:
86 42 01 41 83 43 01 41 86 42
Объяснение:
BBBBBBACCCABBBBBB
1) ищем цепочки (упакованная последовательность содержит управляющие байты, за каждым управляющим байтом следует один или несколько байтов данных)
6В 1А 3С 1А 6В
2) кодируем управляющие байты
6В
6 - количество повторов символа (В - символ)
6₁₀ = 110₂
дополняем до байта 0 слева
00000110
заменяем старший бит на 1, т.к. надо повторять
10000110
разбиваем на тетрады (для перевода в 16 систему счисления)
[tex]\left\begin{array}{ccc}1000& 0110\\8&6\end{array}\right[/tex]
86 B
1A
1 - количество повторов символа, т.е. символ не повторяется, а встречается 1 раз (А - символ)
1₁₀ = 1₂
дополняем до байта 0 слева
00000001
оставляем старший бит 0, т.к. символ не повторяется, а после него идёт повтор (3С)
00000001
разбиваем на тетрады (для перевода в 16 систему счисления)
[tex]\left\begin{array}{ccc}0000& 0001\\0&1\end{array}\right[/tex]
01 А
3С
3 - количество повторов символа (С - символ)
3₁₀ = 11₂
дополняем до байта 0 слева
00000011
заменяем старший бит на 1, т.к. надо повторять
10000011
разбиваем на тетрады (для перевода в 16 систему счисления)
[tex]\left\begin{array}{ccc}1000& 0011\\8&3\end{array}\right[/tex]
83 B
потом повторяется 2 и 1 цепочки:
1A → 01 А
6В → 86 B
3) кодируем байты данных
код большой (прописной) латинской буквы «А» с помощью шестнадцатеричных цифр можно записать как 41
код большой (прописной) латинской буквы «В» с помощью шестнадцатеричных цифр можно записать как 42
код большой (прописной) латинской буквы «С» с помощью шестнадцатеричных цифр можно записать как 43
4) собираем всё вместе:
[tex]\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[/tex]