Формы представления чисел в ЭВМ. Кодирование текстовой и графической информации

Физический бит и логическая семантика данных

В аппаратных ячейках памяти и регистрах процессора физически хранятся только дискретные состояния 0 и 1.

Физический уровень

  • Триггеры SRAM, конденсаторы DRAM, флеш-ячейки.
  • Единица физической адресации памяти — 8-битный байт.
  • Аппаратные машинные слова: 16, 32, 64 бита.

Инвариант архитектуры

  • В ячейке памяти нет метаданных о типе данных.
  • Байт 11111111_2 — это:
    • 255 (беззнаковое целое)
    • -1 (знаковое в доп. коде)
    • символ «я» в кодировке CP1251.
  • Тип определяется кодом исполняемой инструкции!

Целые числа без знака (Unsigned Integers)

В беззнаковом формате все разряды ячейки используются для представления абсолютного значения числа.

Формула диапазона значений n-битной сетки: [0; 2n - 1]

Разрядность Байт Десятичный диапазон Шестнадцатеричный вид (HEX)
8 бит (байт) 1 байт 0 ... 255 0x00 ... 0xFF
16 бит (слово) 2 байта 0 ... 65 535 0x0000 ... 0xFFFF
32 бита (двойное слово) 4 байта 0 ... 4 294 967 295 0x00000000 ... 0xFFFFFFFF

Перенос из старшего разряда (2n) фиксируется аппаратным флагом CF (Carry Flag).

Числа со знаком: прямой, обратный и дополнительный коды

Старший (MSB) бит отводится под знак: 0 — плюс, 1 — минус.

Код Принцип кодирования отрицательного числа -X Проблема в архитектуре
Прямой Знаковый бит 1, остальные биты — модуль |X|. Два нуля (+0 и -0). Сложнейшая аппаратная схема вычитания.
Обратный Знаковый бит 1, побитовая инверсия значащих бит. Два нуля. Требует циклического переноса единицы.
Дополнительный Обратный код + 1 к младшему разряду: [-X] = NOT(|X|) + 1. Один нуль! Вычитание аппаратно заменяется суммированием.

Диапазон n-битного доп. кода: [-2n-1; 2n-1 - 1]. Для 8 бит: [-128; +127]. Вес старшего бита равен -128.

Аппаратное вычитание через сложение в АЛУ

В арифметико-логическом устройстве нет отдельного узла вычитания: операция A - B преобразуется в A + [-B]доп.

Пример: вычислить 58 - 43 в 8-битном регистре: 1) |-43| = 43 = 00101101_2 2) Обратный код: 11010010_2 3) Дополнительный код: 11010010 + 1 = 11010011_2 (0xD3) 4) Сложение в сумматоре: 00111010_2 (+58) + 11010011_2 (-43 в доп. коде) ------------------------------ 1 00001101_2 (9-й бит переноса отбрасывается!) Регистр сохраняет 00001101_2 = +15_10. Проверка: 58 - 43 = 15.

Флаг знакового переполнения OF (Overflow Flag) фиксирует неверный знак результата при сложении однополярных чисел.

Вещественные числа и концепция плавающей точки

Целочисленные форматы с фиксированной точкой не могут охватить одновременно микромир (10-10) и макромир (1020).

Фиксированная точка

  • Положение запятой жестко закреплено.
  • Высокая скорость, узкий диапазон.
  • Используется в бухгалтерских расчетах (целое число копеек).

Плавающая точка

  • Экспоненциальная запись: X = ±M × 2e.
  • Запятая перемещается («плавает») при нормализации.
  • Огромный динамический диапазон при фиксированной длине слова.

Стандарт IEEE 754: архитектура Single (32 бита)

32-битное машинное слово делится на три независимых поля:

31 30 23 22 0 +--+------------+----------------------------------------------------+ |S | E (8 бит) | M (23 бита) | +--+------------+----------------------------------------------------+ 1 Смещенный Дробная часть мантиссы бит порядок (без неявной единицы) знака (e + 127)

Смещение порядка +127 и неявная единица

Смещенный порядок (Bias = 127)

  • Истинный порядок e ∈ [-126; +127].
  • Прибавление 127 переводит диапазон в E ∈ [1; 254] (только беззнаковые числа).
  • Аппаратный выигрыш: целочисленный компаратор процессора сравнивает вещественные числа без декодирования знака степени!

Неявная единица (Implicit 1)

  • Любое двоичное нормализованное число начинается с единицы: 1.M × 2e.
  • Хранить эту единицу в памяти бессмысленно.
  • Она не пишется в регистр, но восстанавливается FPU при расчетах. Точность мантиссы возрастает до 24 бит!

Специальные значения стандарта IEEE 754

Порядок E Мантисса M Значение Смысл и поведение в архитектуре
E = 0 M = 0 ±0 Положительный и отрицательный ноль (зависят от бита S).
E = 0 M ≠ 0 Денормализованное Числа вблизи нуля: (-1)S × (0.M) × 2-126. Плавное исчезновение точности (underflow).
E = 255 M = 0 ±∞ Бесконечность (деление на ноль, переполнение разрядной сетки).
E = 255 M ≠ 0 NaN (Not a Number) Неопределенность: 0/0, √(-1), ∞ - ∞. Тихий (qNaN) и сигнальный (sNaN).

Пошаговый перевод в IEEE 754 на примере -13.510

  1. Знак: число отрицательное ⇒ S = 1.
  2. Двоичный модуль: 1310 = 1101_2; 0.510 = 0.1_2 ⇒ 13.510 = 1101.1_2.
  3. Нормализация: 1101.1_2 = 1.1011_2 × 23 ⇒ e = 3.
  4. Смещенный порядок: E = 3 + 127 = 13010 = 10000010_2.
  5. Мантисса (23 бита): отбрасываем «1.», значащие биты «1011» дополняем нулями справа:
    10110000000000000000000.
S | E | M 1 | 10000010 | 1011 0000 0000 0000 0000 000 Двоичный: 1100 0001 0101 1000 0000 0000 0000 0000 HEX: 0xC1580000

Кодирование текста: от ASCII к кодовым страницам

Таблица ASCII (7 бит)

  • 128 кодовых позиций (0x00 ... 0x7F).
  • Английский алфавит, цифры, знаки, 32 управляющих кода (CR, LF, TAB).
  • Младший байт хранит символ, старший бит = 0.

Проблема кодовых страниц

  • 8-й бит дал вторую половину таблицы (0x80 ... 0xFF).
  • Для кириллицы созданы разные страницы: Windows-1251, KOI-8R, CP866.
  • Несовместимость вызвала «кракозябры» при передаче файлов.

Стандарт Unicode и архитектура кодировки UTF-8

Unicode присваивает каждому символу уникальный код (Code Point, например, U+0410 = «А»).

Коды Unicode Длина Битовый шаблон UTF-8 Что кодирует
U+0000..U+007F 1 байт 0xxxxxxx Символы стандартного ASCII (совместимость 100%)
U+0080..U+07FF 2 байта 110xxxxx 10xxxxxx Кириллица, греческий, арабский (каждая русская буква 2 байта!)
U+0800..U+FFFF 3 байта 1110xxxx 10xxxxxx 10xxxxxx Иероглифы (CJK), математические символы
U+10000..10FFFF 4 байта 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Эмодзи, редкие исторические знаки

Кодирование растровой графики

Растровое изображение — двумерный массив дискретных пикселей (W × H).

Параметры растра

  • Разрешение: W × H (например, 16 × 16 = 256 точек).
  • Битовая глубина (b): бит на пиксель.
  • Число цветов: K = 2b.

Глубина цвета в индустрии

  • b = 1: Монохром (21 = 2 цвета).
  • b = 4: 16 цветов (индексированная палитра).
  • b = 8: 256 цветов (палитра / градация серого).
  • b = 24: TrueColor (RGB 8:8:8, 16.7 млн цветов).
  • b = 32: RGBA (RGB + альфа-канал прозрачности).

Расчет объема видеопамяти и выравнивание строк

Формула сырого объема несжатого растра:
Vbits = W × H × b (бит),   Vbytes = (W × H × b) / 8 (байт)

Пример для значка 16 × 16 (N = 256 пикселей):

Аппаратное выравнивание (Scanline Padding): В форматах типа BMP каждая строка обязана быть кратна 4 байтам (32 бита шины памяти), недостающие байты заполняются нулями.

Двоичная логика в жизни

Мем: There are 10 types of people in the world: those who understand binary, and those who do not

Атрибуция: Мем «Mathjoke (10 types of people in the world)». Автор: MjolnirPants (Wikimedia Commons). Источник: Wikimedia Commons (File:Mathjoke.jpg). Лицензия: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). Изменения: оптимизировано разрешение и конвертировано в автономный офлайн Data URI без изменения содержания.

Слайд 1 из 15