В одном байте содержится 8 бит, каждый из которых может принимать одно из двух значений: 0 или 1. Количество возможных комбинаций рассчитывается по формуле , где — количество бит. Для одного байта это: Таким образом, в одном байте можно записать 256 различных комбинаций (от 00000000 до 11111111). Как комбинации обозначают буквы и цифры Компьютеры не понимают буквы или десятичные цифры напрямую; они оперируют только электрическими сигналами (есть ток / нет тока). Чтобы компьютер мог работать с текстом, люди договорились использовать кодировочные таблицы. 1. Принцип соответствия (Маппинг) Каждому числу, которое можно записать в байт (от 0 до 255), присваивается определенный символ. Например, в популярном стандарте ASCII (American Standard Code for Information Interchange):
- Комбинация
01000001(число 65) соответствует заглавной латинской букве A. - Комбинация
01000010(число 66) соответствует букве B. - Комбинация
00110001(число 49) соответствует символу цифры 1.
2. Разделение на цифры и их значения Важно различать число 1 как математический объект и символ «1» как графический знак в тексте.
- Когда вы печатаете цифру в текстовом редакторе, она сохраняется как код символа из таблицы (например, 49 в ASCII).
- Когда компьютер выполняет арифметику, он переводит эти биты в их реальное числовое значение.
3. Расширение возможностей (Юникод) Поскольку 256 комбинаций одного байта недостаточно, чтобы вместить все алфавиты мира (кириллицу, иероглифы, эмодзи), были созданы системы вроде UTF-8. В таких системах для обозначения одного символа может использоваться не один, а несколько байтов подряд. Это позволяет закодировать более миллиона различных знаков. Пример кодирования слова «Hey» в ASCII:
| Буква | Десятичный код | Двоичный код (байт) |
|---|---|---|
| H | 72 | 01001000 |
| e | 101 | 01100101 |
| y | 121 | 01111001 |
Если вам интересно, как именно происходит перевод человеческого языка в машинный код на более глубоком уровне, я могу составить таблицу кодов для русского алфавита или объяснить разницу между кодировками ASCII и UTF-8.