От бутерброда к байту
данные, числа и первые программы
Ананко Софья Михайловна · Качур Анна Юрьевна
VK · Telegram
Синтез: от замысла к электрону
Связь = ЧТО? КАК? КАКИМ ОБРАЗОМ?
Всё, что передаётся — данные. Как именно передать — технология. Каким образом это физически устроено — сигнал.
Где? — в канале связи
Куда? — от источника к получателю
Откуда? — от микрофона, камеры, клавиатуры
Когда? — в реальном времени или с задержкой
Насколько? — скорость, задержка, потери
Почему? — физические законы (Шеннон, Найквист)
Зачем? — чтобы человек получил информацию
Что такое данные
Данные — информация, записанная так, чтобы машина могла её хранить, передавать и обрабатывать.
💬
Сообщение
🐱
Фото
🎵
Песня
▶️
Видео
🎮
Игра CS
📡
Wi-Fi
Отправляете другу «Привет» — на экране 6 букв. Но внутри телефона букв нет: только электрические сигналы в двух состояниях — «вкл» и «выкл».
Бит (bit, binary digit) — один сигнал: 0 или 1. Один ответ «да/нет», один переключатель.
Байт = 8 бит. Кодирует число 0–255: один символ, одна RGB-компонента, один отсчёт звука.
Системы счисления: один принцип
Цифра доросла до максимума (DEC 9 · BIN 1 · HEX F) → сбрасывается в 0, а +1 переносится в старший разряд. Жми ▶| по шагам или ▶ — авто.
8 переключателей = 1 байт
Каждый бит — переключатель с весом. Включённые складываем:
1 бит → 2 значения
да / нет, вкл / выкл
1 байт = 8 бит
0–255: символ, RGB-компонента, отсчёт
2⁸ = 256
комбинаций. 255 = 2⁸−1 — максимум байта
От бита до терабайта
| Приставка | Десятичное | Двоичное (точное) | Пример |
|---|---|---|---|
| кило · кБ | 10³ = 1 000 | 2¹⁰ = 1 024 | Страница текста ≈ 2 кБ |
| мега · МБ | 10⁶ | 2²⁰ = 1 048 576 | MP3-песня ≈ 5 МБ |
| гига · ГБ | 10⁹ | 2³⁰ ≈ 1,07×10⁹ | Фильм HD ≈ 4 ГБ |
| тера · ТБ | 10¹² | 2⁴⁰ ≈ 1,10×10¹² | Жёсткий диск 1–4 ТБ |
→ файл 1 ГБ скачается за 1000 / 12,5 = 80 с
1 кБ ≈ полстраницы · 1 МБ ≈ минута MP3 · 1 ГБ ≈ 250 песен · 1 ТБ ≈ 500 ч HD-видео.
Таблица ASCII (1963)
128 символов = 2⁷ → 7 бит. + 8-й бит для контроля = байт. Ниже — все 95 печатаемых символов с кодами (DEC слева, символ справа): 33–47 знаки, 48–57 цифры, 65–90 заглавные, 97–122 строчные.
'A'→'a' = +32 = 1 бит. Смена регистра = переключить один бит. '7'−48 = 7 — цифра из символа.
Коды 0–31 — управляющие: LF=10 (новая строка), CR=13, TAB=9, Ctrl+C=3, SP=32 (пробел). Наследие телетайпов.
Кракозябры → UTF-8
Проблема 90-х
Код 192 в КОИ-8 — одна буква, в Windows-1251 — другая. Письмо в чужой кодировке → каша.
«Привет» → «╧ЁштхЄ»
Решение: UTF-8
Один стандарт для всех языков. ASCII (0–127) = 1 байт, кириллица = 2, иероглифы = 3, эмодзи = 4.
Unicode: 154 000+ символов. 98 % веба — UTF-8. Цена универсальности.
Фото = сетка пикселей
Фотография разбивается на пиксели. Каждый пиксель — три числа R, G, B (0–255 = 1 байт). Кликни по фото или сетке — выбери пиксель; кнопки ниже запускают авто-обход: фото → сетка → пиксель → код.
FFFFFF = белый, 000000 = чёрный, FFFF00 = жёлтый, FF0000 = красный. Так задают цвет в HTML/CSS: #RRGGBB.
× 3 байта = 36 МБ один снимок
JPEG сжимает ≈ ×10 → 3,4 МБ
Звук = отсчёты во времени
Микрофон превращает колебания воздуха в напряжение. АЦП измеряет его N раз в секунду и округляет до ближайшего уровня → поток чисел.
Телефон: 8000 × 8 × 1 = 64 кбит/с
CD: 44100 × 16 × 2 = 1411 кбит/с
Видео = 25 картинок/сек
Видео — это последовательность кадров, каждый кадр = фотография. Меняются так быстро, что глаз видит движение.
× 30 fps = 178 МБ/с · 1 мин = 10,7 ГБ
без сжатия передать невозможно
Секрет сжатия: соседние кадры почти одинаковы. Кодируем не каждый кадр, а разницу.
I-frame — опорный (полный JPEG). P/B-frame — только изменения. H.264 → H.265 → AV1, каждый на 30–50 % лучше.
Итог: фильм 1,5 ч сжимается с ~950 ГБ до 4–8 ГБ. Поток 1080p ≈ 5 Мбит/с.
Игра = быстрая передача чисел
Онлайн-игра — это быстрая передача огромного количества данных. Сервер хранит «истинный» мир, клиент шлёт ваши действия и рисует картинку.
Каждый кусок кодируется своим числом и шлётся 64–128 раз в секунду.
меньше мегабита — в 10–60 раз меньше видео
Картинку рисует ваша видеокарта; по сети идут координаты и события. Клавиши = битовая маска: бит 0 — вперёд, бит 7 — стрельба.
Скорость света не обманешь
Новосибирск → Москва (только физика, без обработки)
| Маршрут | Пинг |
|---|---|
| Сервер рядом | 5–20 мс |
| Москва | 40–60 мс |
| Франкфурт | 70–100 мс |
| Нью-Йорк | 150–200 мс |
| Пинг | Ощущение |
|---|---|
| 20 мс | Идеально |
| 50 мс | Комфортно |
| 100 мс | Заметные лаги |
| 300 мс | Играть невозможно |
Цифра ≠ число
Цифра
Символ для записи. В DEC: 0–9 (их 10). Набор конечен.
Число
Количество чего-либо. Чисел бесконечно.
Двадцать = 20₁₀ = 10100₂ = 14₁₆ = XX
Позиционная запись: позиция цифры задаёт её вес.
1101₂ = 1×2³+1×2²+0+1×2⁰ = 8+4+1 = 13
F4₁₆ = 15×16¹+4×16⁰ = 240+4 = 244
356₈ = 3×64+5×8+6 = 238
| Система | Base | Цифры |
|---|---|---|
| BIN | 2 | 0, 1 |
| OCT | 8 | 0–7 |
| DEC | 10 | 0–9 |
| HEX | 16 | 0–9, A=10…F=15 |
DEC · BIN · HEX
Одно число — разные записи. Основание = сколько цифр в системе и во сколько раз тяжелеет разряд влево.
DEC · основание 10
Цифры 0–9. Разряд левее — ×10. Ценники, счёт.
BIN · основание 2
Цифры 0 и 1 (выкл/вкл). Разряд — ×2. Биты, маски.
HEX · основание 16
Цифры 0–9, A–F (A=10…F=15). Разряд — ×16. Цвета, дампы.
Барабан крутится
Последняя цифра → перенос в старший разряд. DEC: 9→10. BIN: 1→10. HEX: F→10. Смотрите, как счётчик идёт +1 → жёлтым подсвечены биты, которые переключились (перенос).
| DEC | BIN | HEX | |
|---|---|---|---|
| 7 | 0111 | 7 | |
| 8 | 1000 | 8 | ← BIN: перенос через 3 разряда |
| 9 | 1001 | 9 | |
| 10 | 1010 | A | ← DEC переполнился, HEX идёт |
| 15 | 1111 | F | ← максимум 4 бит |
| 16 | 10000 | 10 | ← HEX переполнился |
| 255 | 11111111 | FF | ← максимум байта |
DEC → BIN: деление на 2
Делим на 2, записываем остаток, читаем снизу вверх.
Зачем связисту:
BIN — язык аппаратуры
HEX — компактная запись
DEC — повседневность
Тот же алгоритм с делением на 16 → перевод в HEX. Скоро запрограммируем его.
Степени двойки
| n | 2ⁿ | Применение |
|---|---|---|
| 4 | 16 | Тетрада (hex-цифра) |
| 7 | 128 | Полная ASCII (0–127) |
| 8 | 256 | Один байт, одна RGB-компонента |
| 10 | 1 024 | 1 КиБ |
| 16 | 65 536 | Порт TCP/UDP |
| 24 | 16 777 216 | True Color |
| 32 | 4 294 967 296 | IPv4 (~4,3 млрд) |
| 48 | 2,81 × 10¹⁴ | MAC-адрес |
| 128 | 3,4 × 10³⁸ | IPv6 |
Читаем данные как инженер
FF:FF:FF:FF:FF:FF — broadcast (всем)
08 00 = 0x0800 = IPv4
IP 192.168.1.1 = C0.A8.01.01
MAC = 6 байт = 48 бит через «:»
BIN ↔ HEX: 4 бита = 1 hex-цифра
16 = 2⁴ → каждая hex-цифра = ровно 4 бита. Как тетрис: кубики «щёлкают» по четыре.
F4₁₆ = 1111 0100₂
Обратно: разбиваем справа по 4:
4×16+9 = 73 ✓
Аналогично 8 = 2³ → триады (BIN ↔ OCT):
357₈ = 011101111₂
IP 192.168.1.1:
DEC: 192.168.1.1
HEX: C0.A8.01.01
BIN: 11000000.10101000.00000001.00000001
HEX-сложение + BIN-вычитание
HEX: 3A₁₆ + 4F₁₆
BIN: 1101₂ − 1011₂
Сравнение форматов
Фото
| Формат | Потери | Где |
|---|---|---|
| RAW | нет | проф. |
| PNG | нет | схемы |
| JPEG | да | веб |
| WebP | да/нет | веб |
Аудио
| Формат | Поток | Где |
|---|---|---|
| PCM | 1411 кб | CD |
| MP3 | 128–320 | плееры |
| Opus | 48–128 | VoIP |
| G.711 | 64 | телефон |
Видео
| Кодек | 1080p | Где |
|---|---|---|
| H.264 | 3–8 Мб | везде |
| H.265 | 2–5 Мб | 4K |
| VP9 | 2–5 Мб | YouTube |
| AV1 | 1,5–4 | новый |
Декомпозиция: разбей на шаги
Банка варенья, хлеб, ложка. Опиши рецепт для робота-повара — он понимает только точные команды.
Большая задача → маленькие шаги, каждый = одна команда. Компьютер педантичен: не додумает, не переспросит.
Пропустили шаг 4? Робот набирает варенье из закрытой банки → ошибка.
Перепутали 7 и 8? Варенье на тарелке, а не на хлебе.
Алгоритм ≠ программа
Последовательность шагов для решения задачи, записанная на человеческом языке, блок-схеме или псевдокоде.
Не зависит от языка. Один алгоритм → Python, Си, Java.
Алгоритм, записанный на конкретном языке программирования и готовый к выполнению.
Зависит от языка: одна задача на Python и Си выглядит по-разному.
5 элементов блок-схемы
Каждая фигура — свой смысл. Из них собирается любая схема.
Бутерброд = конвейер
Все шаги идут последовательно, без ветвлений и повторов. Стрелка — только вниз.
Нужен второй ломтик? Добавь ещё один прямоугольник перед «Конец». Нужна проверка «есть ли варенье?» — нужен ромб (следующий слайд).
Ромб: чётное или нечётное?
Из ромба выходят два пути: «Да» и «Нет». Каждый ведёт к своему действию, потом они сходятся.
Стрелка назад = цикл
Возвратная стрелка возвращает поток к проверке. Тело повторяется, пока условие истинно.
Когда N станет нулём — условие ложно, цикл завершается. Это и есть перевод в двоичную делением на 2.
Mathcad · Python · Си
📐
Mathcad
Умный лист бумаги. Формулы считаются сразу. Графики мгновенно.
Подставить, покрутить параметры
🐍
Python
Умный собеседник. Простой синтаксис, огромная библиотека.
Повторить расчёт, обработать файл
⚙️
Си
Близость к железу. Полный контроль над битами.
Разобрать заголовок, написать прошивку
Умный лист бумаги
Бесконечный лист, на котором формулы сразу считаются. Никакого «запуска», никаких командных строк — просто пишете, а он считает.
- Дробь — горизонтальная черта, не «/»
- Корень — значок √, не «sqrt»
- Интеграл — привычный ∫
- Греческие буквы — α, β, ω
Рабочий лист — одновременно расчёт и документация: распечатал и вставил в отчёт.
Панели инструментов
Каждая панель — набор кнопок для своей задачи. Щёлкнул по нужной — вставил оператор в лист.
Калькулятор
sin cos ln √ n! |x| — арифметика и базовые функции
Вычисления
:= задать значение, = показать результат
Символьные
simplify · factor · solve — ответ формулой, не числом
График
2D (y от x) и 3D — перестраивается мгновенно
Матрица
создать, обратить, Tᵀ — для MIMO, четырёхполюсников
Программ.
if · for · while · return внутри формулы
Греческий
ω — частота, λ — длина волны, σ — СКО
Булева
∧ ∨ ¬ · сравнения < > ≤ ≥ ≠
Два знака равенства: := и =
:= «задать значение»
Набираешь : (двоеточие) — Mathcad сам превращает в :=. «Запомни, что a равно пяти».
= «покажи результат»
Mathcad подставляет и считает. «Чему сейчас равно?»
b := a² + 3
b = 28
Затухание в кабеле: пошагово
Кабель 500 м, погонное затухание 0,05 дБ/м. Найти полное затухание.
- 1Набрать L, нажать :, ввести 500 → L := 500
- 2Ввести α (Ctrl+G), :, 0.05 → α := 0.05
- 3A := α · L → подставит значения
- 4A = → Mathcad показывает 25 дБ
Меняете L на 1000 → A = 50.
Меняете α на 0.03 → A = 30.
Графики в один щелчок
Указал, что по оси X и что по оси Y — Mathcad рисует. Меняешь формулу → график перестраивается мгновенно.
x := 0, 0.1 .. 10
y(x) := sin(2·π·x) · e−0.3·x
→ затухающая синусоида
Символьные преобразования
Ответ — не число, а формула. Mathcad работает с буквами как Wolfram Alpha, но локально.
(a + b)² → simplify → a² + 2ab + b²
∫ sin(x) dx → −cos(x) + C
solve(x² − 5x + 6 = 0, x) → 2, 3
simplify
упростить
factor
на множители
expand
раскрыть скобки
solve
решить уравнение
Установка + первый запуск
Если Mathcad — лист бумаги, то Python — умный собеседник, понимающий команды на почти-английском. Python уже скачан — осталось писать код в VS Code.
- 1Python установлен (✓ Add to PATH). Проверка в терминале: python --version → 3.12
- 2Открыть VS Code → вкладка Extensions (Ctrl+Shift+X) → поставить расширение Python от Microsoft
- 3Создать файл hello.py, написать код
- 4Нажать ▶ Run (или F5) → результат в нижней панели «Терминал»
Переменная = коробка с наклейкой
Именованное место в памяти. Кладёшь в коробку «a» число 5 — дальше «a» означает 5.
В Python тип указывать не нужно — он сам поймёт. В Си — нужно (увидим дальше).
Типы данных
int
a = 42
целое, без ограничения размера (даже 2¹⁰⁰⁰)
float
pi = 3.14
дробное. Точка, не запятая!
str
name = "Привет"
текст в кавычках
list
nums = [10,20,30]
набор значений
7 операций
print и input
input() всегда возвращает строку.
Чтобы считать — обернуть в int() или float().
f-строка: f"...{выражение}..."
f"C = {C:.0f}" — округлить до целого.
if / else
Если температура выше 30° — вывести «Жарко», иначе — «Нормально».
① Блок-схема
② Программа
for: повторить N раз
Сложить все числа от 1 до 100. Ответ должен получиться 5050.
① Блок-схема
② Программа
while: пока условие истинно
for — когда знаем, сколько раз. while — когда повторяем «пока выполняется условие».
def: именованный блок
def — define (определить)
c — параметр (вход)
return — верни результат
to_binary(): DEC → BIN
Перевести десятичное число в двоичную запись делением на 2 с остатком (как в §0.9 на бумаге).
① Блок-схема
② Программа
Hello World + компиляция
- #include — подключить библиотеку
- int main — точка входа
- printf — напечатать. \n = LF (код 10)
- return 0 — «всё ОК»
- { } — границы блока (вместо отступов)
- Каждая команда — ;
Python = устный переводчик (выполняет на лету). Си = письменный: сначала весь текст переводит компилятор (gcc), потом читаете готовое.
Типы указываем явно
| Тип | Размер | Диапазон |
|---|---|---|
| char | 1 байт | 0–255 |
| int | 4 байта | ±2,1 млрд |
| double | 8 байт | ~15 цифр |
char ch = 'A' и char ch = 65 — одно и то же: символ в Си это его ASCII-код.
if / else: скобки вместо отступов
Сравнение с Python
| Элемент | Python | Си |
|---|---|---|
| Условие | if x: | if (x) { |
| Блок | отступы | { } |
| Конец строки | — | ; |
for и while
Си ближе к процессору: задать счётчик, проверить условие, увеличить.
Зачем Си незаменим
| Операция | Символ | Назначение |
|---|---|---|
| >> | Сдвиг → | Деление на 2ⁿ |
| & | И | Маскирование |
| | | ИЛИ | Установка бит |
| ^ | XOR | Переключение |
DEC → BIN: бок о бок
Тот же перевод в двоичную — блок-схема та же (деление на 2 с остатком), меняется только язык программы.
Одна задача — три решения
C = B · log₂(1 + SNR). Канал B = 3100 Гц, SNR = 30 дБ. Найти предельную пропускную способность.
SNRdB := 30
SNR := 10^(SNRdB/10)
C := B·log(1+SNR, 2)
C = 30 899
Когда какой инструмент
| Mathcad | Python | Си | |
|---|---|---|---|
| Сильная сторона | Формулы как в учебнике, мгновенные графики | Простой синтаксис, гигантская экосистема | Полный контроль над битами и байтами |
| Задача | Подставить, покрутить параметры, график | Повторить с разными данными, автоматизировать | Разобрать заголовок, написать прошивку |
| Скорость | — | Средняя (интерпретатор) | Максимальная (компилятор) |
| Порог входа | Низкий | Низкий | Высокий |
| Где встретим | Лабораторные расчёты | Обработка данных, скрипты | Ядра ОС, драйверы, прошивки |
Одна задача → три взгляда. Если совпали — расчёт верен.