1. Используя алгоритм RLE, закодируйте последовательность символов
BBBBBBACCCABBBBBB
Запишите результат в виде шестнадцатеричных кодов (каждый символ кодируется в виде байта, который представлен двумя шестнадцатеричными цифрами ). Проверьте полученный результат с помощью программы RLE.
Ответы
Ответ:
86 42 01 41 83 43 01 41 86 42
Объяснение:
BBBBBBACCCABBBBBB
1) ищем цепочки (упакованная последовательность содержит управляющие байты, за каждым управляющим байтом следует один или несколько байтов данных)
6В 1А 3С 1А 6В
2) кодируем управляющие байты
- если следующий за управляющим байт данных при распаковке нужно повторить, то в старший бит управляющего байта записывается 1, а в оставшихся 7 битах управляющего байта сколько раз нужно повторить байт данных
- если следующий за управляющим один или несколько байтов данных данных при распаковке повторять не нужно, то в старший бит управляющего байта записывается 0, а в оставшихся 7 битах управляющего байта сколько следующих байтов данных надо взять без изменения
6В
6 - количество повторов символа (В - символ)
6₁₀ = 110₂
дополняем до байта 0 слева
00000110
заменяем старший бит на 1, т.к. надо повторять
10000110
разбиваем на тетрады (для перевода в 16 систему счисления)
86 B
1A
1 - количество повторов символа, т.е. символ не повторяется, а встречается 1 раз (А - символ)
1₁₀ = 1₂
дополняем до байта 0 слева
00000001
оставляем старший бит 0, т.к. символ не повторяется, а после него идёт повтор (3С)
00000001
разбиваем на тетрады (для перевода в 16 систему счисления)
01 А
3С
3 - количество повторов символа (С - символ)
3₁₀ = 11₂
дополняем до байта 0 слева
00000011
заменяем старший бит на 1, т.к. надо повторять
10000011
разбиваем на тетрады (для перевода в 16 систему счисления)
83 B
потом повторяется 2 и 1 цепочки:
1A → 01 А
6В → 86 B
3) кодируем байты данных
- для определения шестнадцатеричных кодов символов используем таблицу ASCII (скрин 1)
- в первом столбце записана первая цифра шестнадцатеричного кода символа
- в первой строке записана вторая цифра шестнадцатеричного кода символа
код большой (прописной) латинской буквы «А» с помощью шестнадцатеричных цифр можно записать как 41
код большой (прописной) латинской буквы «В» с помощью шестнадцатеричных цифр можно записать как 42
код большой (прописной) латинской буквы «С» с помощью шестнадцатеричных цифр можно записать как 43
4) собираем всё вместе: