# Декодирование битовых плоскостей в C++

> Создает код на C++ для извлечения символов из двумерного массива bitmap, где данные были скрыты в конкретных битовых слоях, используя обратную логику предоставленного алгоритма кодирования.

- Skill: `ecnu-icalk/c-11` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/c-11`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/c-11/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/c-11

---

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

