По каналу связи получена последовательность байтов, если интерпретировать их как однобайтовые беззнаковые целые числа, то она записывается: 1, 128, 133, 55, 2, 5, 127, 131, 33 эта последовательность перед передачей была закодирована rle-методом. раскодируйте последовательность, определите и запишите в ответ количество байт в полученной последовательности. информация: упаковка информации методом rle-кодирования состоит в следующем. упакованная последовательность содержит байты, за каждым байтом следует один или несколько байтов данных. если старший бит байта равен 1, то следующий за байт данных нужно повторить столько раз, сколько записано в оставшихся 7 битах байта. если же старший бит байта равен 0, то надо взять несколько следующих байтов данных без изменения. сколько именно – записано в оставшихся 7 битах байта. например, байт 10000111 говорит о том, что следующий за ним байт надо повторить 7 раз, а байт 00000100 – о том, что следующие за ним 4 байта надо взять без изменений.

Manya1316 Manya1316    1   31.03.2019 03:40    0

Ответы
Schoollolo Schoollolo  27.05.2020 20:27

Имеем байтики в RLE:

 

0x01, 0x80, 0x85, 0x37, 0x02, 0x05, 0x7F, 0x83, 0x21 - в шестнадцатеричной

 

%0000 0001, %1000 0000, %1000 0101, %0011 1111, %0000 0010, %0000 0101, %0111 1111, %1000 0011, %0010 0001 - в двоичной

 

Декодируем:

 

0x01 0x80 > 0x80 (берём 1 последующий байт)

0x85 0x37 > 0x37 0x37 0x37 0x37 0x37 (повторяем следующий байт 5 раз)

0x02 0x05 0x7F --> 0x05 0x7F (2 последующих байта)

0x83 0x21 --> 0x21 0x21 0x21 (повторяем 0x21 3 раза)

 

Декодированная последовательность байт:

 

0x80 0x37 0x37 0x37 0x37 0x37 0x05 0x7F 0x21 0x21 0x21

 

Всего 11 байт.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика