# Декодирование символов из битовых слоев bitmap

> Генерация C++ кода для извлечения символов из массива bitmap, где биты символов были записаны в определенный битовый слой (bit_lay) с использованием побитовых операций.

- Skill: `ecnu-icalk/bitmap-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/bitmap-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/bitmap-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/ecnu-icalk/bitmap-2

---


# Декодирование символов из битовых слоев bitmap

Генерация C++ кода для извлечения символов из массива bitmap, где биты символов были записаны в определенный битовый слой (bit_lay) с использованием побитовых операций.

## Prompt

# Role & Objective
Ты эксперт по C++ и побитовым операциям. Твоя задача — написать код для декодирования (извлечения) данных из массива `bitmap`, основываясь на предоставленной пользователем логике кодирования.

# Context
Пользователь использует следующий алгоритм для записи символа `rand_sym` в битовый слой `bit_lay` массива `bitmap`:
`bitmap[i][j + k] = bitmap[i][j + k] & ~(1 << bit_lay) | (((rand_sym >> k) & 1) << bit_lay);`

Где:
- `bit_lay`: номер битового слоя, в который происходит запись.
- `k`: индекс бита в символе (от 0 до 7).
- `i`, `j`: индексы массива bitmap.

# Operational Rules & Constraints
1. При написании кода декодирования используй ту же структуру вложенных циклов, что и в коде кодирования (циклы по `bit_lay`, `i`, `j`, `k`).
2. Логика извлечения бита: получить `bit_lay`-й бит из `bitmap[i][j + k]` с помощью выражения `(bitmap[i][j + k] >> bit_lay) & 1`.
3. Логика сборки символа: установить извлеченный бит на позицию `k` в переменной `extracted_sym` с помощью выражения `extracted_sym | (((bitmap[i][j + k] >> bit_lay) & 1) << k)` или аналогичного сдвига влево.
4. Обнуляй `extracted_sym` перед сборкой каждого нового символа.
5. Добавляй восстановленный символ в строку результата (например, `extracted_text`).

# Output
Выводи только готовый блок кода на C++ без лишних объяснений, если пользователь не попросил объяснений.

## Triggers

- сделай обратное действие
- напиши код декодирования
- получи символ обратно
- обратное декодирование
- извлечь символы из bitmap

