Перейти к содержанию

Представление данных

Информатика IGCSE · Тема 1

Видеоурок по этой теме Открыть страницу видео
21:16

Почему компьютеры используют двоичную систему

Внутри процессора находятся миллиарды крошечных переключателей. Каждый может быть только включён или выключен. Это всё, что есть у компьютера физически — ни троек, ни семерок, ни…

Английское озвучивание · Английский + китайские субтитры (встроенные)

1.1

Почему компьютеры используют двоичную систему

Компьютер может работать только с двумя состояниями: включено и выключено. Вы записываете их как 1 и 0. Система, использующая только две цифры, называется бинарной (основание 2).

Поле синих двоичных цифр, содержащее 0 и 1
Компьютеры представляют все данные — числа, текст, звук и изображения — в виде двоичных строк из 0 и 1

Любой вид данных — числа, текст, звук и изображения — должен быть преобразован в бинарный код перед тем, как компьютер сможет его использовать. Компьютер обрабатывает этот бинарный код с помощью логических вентилей, а хранит его в регистрах (маленьких, быстрых хранилищах внутри процессора).

Кремниевый кристалл микропроцессора под увеличением
Микропроцессор содержит миллионы крошечных транзисторов, каждый из которых является переключателем, находящимся во включённом (1) или выключенном (0) состоянии — это физическая основа бинарного кода
English Русский
digit/ˈdɪdʒɪt/ цифра
binary/ˈbaɪnəri/ бинарная
data/ˈdeɪtə/ данные
logic gate/ˈlɒdʒɪk ɡeɪt/ логический вентиль
processor/ˈprəʊsesə/ процессор
register/ˈredʒɪstə/ регистром
number system/ˈnʌmbə ˈsɪstəm/ система счисления
denary/ˈdiːnəri/ десятичный
hexadecimal/ˌheksəˈdesɪml/ шестнадцатеричный
base/beɪs/ основанием
1.1

Системы счисления

Программа
Кандидаты должны уметь: Примечания и рекомендации
1 Понимать, как и почему компьютеры используют двоичную систему для представления всех видов данных • Любая форма данных должна быть преобразована в двоичный код для обработки компьютером • Данные обрабатываются с помощью логических вентилей и хранятся в регистрах
2 (a) Понимать системы счисления: десятичную, двоичную и шестнадцатеричную (b) Выполнять перевод между (i) положительными десятичными и положительными двоичными числами (ii) положительными десятичными и положительными шестнадцатеричными числами (iii) положительными шестнадцатеричными и положительными двоичными числами • Десятичная система — это система счисления по основанию 10 • Двоичная система — это система счисления по основанию 2 • Шестнадцатеричная система — это система счисления по основанию 16 • Используются только целые числа • Перевод в обоих направлениях, например, из десятичной в двоичную или из двоичной в десятичную • Максимальная длина двоичного числа составляет 16 бит
3 Понять, как и почему шестнадцатеричная система используется как выгодный метод представления данных • Должны быть указаны области информатики, где применяется шестнадцатеричная система • Шестнадцатеричная система понятнее людям, чем двоичная, поскольку является более кратким представлением двоичного кода
4 (a) Сложить два положительных двоичных целых числа с 8 битами (b) Понять концепцию переполнения и причины его возникновения при сложении двоичных чисел • Ошибка переполнения возникнет, если значение превышает 255 в регистре из 8 бит • У компьютера или устройства есть заранее установленный предел, который он может представлять или хранить, например, для 16-битной системы • Ошибка переполнения возникает, когда необходимо вернуть значение за пределами этого лимита
5 Выполнить логический двоичный сдвиг положительного целого двоичного числа с 8 битами и понять влияние этого действия на число • Выполнять логические сдвиги влево • Выполнять логические сдвиги вправо • Выполнять несколько сдвигов подряд • Биты, сдвигаемые с конца регистра, теряются, а на противоположном конце регистра сдвигаются нули • Положительное двоичное целое число умножается или делится в зависимости от выполненного сдвига • Старший (наиболее значащий) или младший (наименее значащий) бит(ы) теряются
6 Использовать систему дополнительного кода для представления положительных и отрицательных целых двоичных чисел с 8 битами • Преобразовать положительное двоичное или десятичное целое число в补充ный код с 8 битами и обратно • Преобразовать отрицательное двоичное или десятичное целое число в补充ный код с 8 битами и обратно

Источник: Программа Cambridge International

Подсчет в двоичной системе: от 0 до 15

Система счисления — это способ записи чисел с использованием фиксированного набора цифр. Вам нужно знать три из них.

Система Основание Используемые цифры
Десятичная 10 0–9
Двоичная 2 0 и 1
Шестнадцатеричная 16 0–9 затем A–F
  • десятичная система — обычная система счёта (также называемая десятичной).
  • бинарная использует только 0 и 1.
  • шестнадцатеричная (hex) использует шестнадцать цифр: 0–9, затем A, B, C, D, E, F обозначают 10, 11, 12, 13, 14, 15.

Основание показывает, сколько различных цифр использует система.

Разрядное значение

Каждый разряд в числе имеет своё разрядное значение. В бинарной системе разрядные значения удваиваются справа налево. Для 8-битного числа они следующие:

128  64  32  16  8  4  2  1
Таблица разрядных значений для 8 бит со значениями от 128 до 1, а также битами числа 150, расположенными под столбцами, сумма которых равна 150
Таблица разрядов 8-битного числа: единицы 1 расположены под значениями, сумма которых равна 150

Один бит — это одна цифра 0 или 1. Восемь бит составляют один байт. Четыре бита (половина байта) называются нибблом.

Перевод между системами счисления

Десятичная → бинарная. Запишите разрядные значения. Поставьте 1 под каждым значением, которое необходимо, чтобы в сумме получить ваше число; под остальные поставьте 0.

Пример: переведите десятичное 150 в бинарное. $150 = 128 + 16 + 4 + 2$.

128 64 32 16 8 4 2 1
  1  0  0  1 0 1 1 0

Таким образом, $150$ = 10010110.

Двоичная → десятичная. Сложите разрядные значения, где стоят единицы 1. 10010110 $= 128 + 16 + 4 + 2 = 150$.

Шестнадцатеричная → бинарная. Преобразуйте каждую шестнадцатеричную цифру в соответствующую группу из 4 бит (ниббл).

Пример: hex F08. $F = 1111$, $0 = 0000$, $8 = 1000$, следовательно F08 = 1111 0000 1000.

Три шестнадцатеричные цифры F, 0 и 8, каждая со стрелкой вниз, указывающей на свою собственную группу из четырёх бит
Каждая шестнадцатеричная цифра соответствует своей собственной группе из 4 бит — F08 = 1111 0000 1000

Бинарная → шестнадцатеричная. Сгруппируйте биты в нибблы по 4, начиная справа. Преобразуйте каждый ниббл в одну шестнадцатеричную цифру.

Десятичная → шестнадцатеричная. Проще всего сначала перевести в бинарную систему, а затем из бинарной в шестнадцатеричную.

Эта таблица помогает запомнить буквы в шестнадцатеричной системе:

Десятичная Двоичная Шестн.
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Вопросы Cambridge используют бинарные числа длиной до 16 бит.

Разобранный пример. Переведите десятичное 100 в 8-битный бинарный код, а затем в шестнадцатеричный.

$100 = 64 + 32 + 4$, поэтому бинарный код выглядит так: 01100100. Разбивая на нибблы, получаем 0110 0100 $= 6$ и $4$, следовательно шестнадцатеричное число равно 64.

Почему используется шестнадцатеричная система

Шестнадцатеричная запись короче бинарной и легче для чтения и написания человеком. Одна шестнадцатеричная цифра заменяет 4 бинарных, что снижает вероятность ошибок. Значение при этом не меняется — шестнадцатеричная система просто представляет тот же бинарный код более кратко.

Учёные-компьютерщики используют шестнадцатеричную систему для:

  • MAC-адресов и адресов IPv6
  • цветовых кодов в HTML (например, #FF0000 означает красный)
  • адресов памяти и кодов ошибок
  • отображения содержимого памяти (так называемый «дамп памяти»)
Исследовать

Двоичная, десятичная и шестнадцатеричная системы

Введите число и увидьте его в двоичной, десятичной и шестнадцатеричной системах — и как разряды его формируют.

English Русский
place value/pleɪs ˈvæljuː/ разрядное значение
bit/bɪt/ бит
byte/baɪt/ байт
nibble/ˈnɪbl/ ниббл
memory address/ˈmeməri əˈdres/ адрес памяти
1.1

Бинарное сложение

Можно складывать два 8-битных бинарных числа по разрядам справа налево, точно так же, как в десятичной системе. Правила для одного разряда следующие:

A B Результат Перенос
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Когда перенос также поступает в разряд, $1 + 1 + 1 = 1$ с переносом 1.

Пример: сложите 01110110 (118) и 00110000 (48).

  0 1 1 1 0 1 1 0    (118)
+ 0 0 1 1 0 0 0 0    (48)
-------------------
  1 0 1 0 0 1 1 0    (166)
8-битное бинарное сложение 118 и 48 с показанными переносами красным цветом над левыми столбцами, дающее результат 166
Сложение по разрядам; переносы распространяются влево. 118 + 48 = 166

Переполнение

8-битный регистр может хранить только десятичные значения от 0 до 255. Если результат сложения превышает 255, ответ требует 9-го бита. Регистр не может вместить этот дополнительный бит, поэтому он теряется. Это называется переполнением (ошибка переполнения). Оно происходит, когда значение выходит за пределы диапазона, который может хранить регистр.

Пример: 11001000 (200) $+$ 01001000 (72) $= 272$. В двоичной системе это 1 00010000, что требует 9 бит. Старший 1 не поместится в 8 бит, поэтому сохраненный ответ неверен.

Сложение 200 и 72 дает 272, что в бинарном виде требует девяти бит; 8-битный регистр сохраняет только нижние восемь бит и теряет девятый, поэтому сохраненный ответ равен 16, а не 272
Сложение 200 и 72 требует 9 бит, но 8-битный регистр отбрасывает девятый, поэтому ответ неверен
English Русский
overflow/ˌəʊvəˈfləʊ/ переполнение
logical binary shift/ˈlɒdʒɪkl ˈbaɪnəri ʃɪft/ логический двоичный сдвиг
least significant bit/liːst sɪɡˈnɪfɪkənt bɪt/ младший значащий бит
two's complement/tuːz ˈkɒmplɪmənt/ дополнительный код
most significant bit/məʊst sɪɡˈnɪfɪkənt bɪt/ старший значащий бит
character set/ˈkærɪktə set/ набор символов
emoji/ɪˈməʊdʒi/ эмодзи
1.1

Логический сдвиг

Логический бинарный сдвиг перемещает все биты влево или вправо на определенное количество позиций.

  • Биты, которые смещаются за пределы регистра, теряются.
  • Нули добавляются в освободившийся конец.

Сдвиг влево умножает число на 2 для каждой позиции сдвига. Сдвиг вправо делит его на 2 для каждой позиции; правые биты (младшие значащие биты) теряются.

Пример: сдвиг влево на 00110101 (53) на 2 позиций.

start:         0 0 1 1 0 1 0 1
left shift 2:  1 1 0 1 0 1 0 0
Логический сдвиг влево на две позиции: стрелки перемещают каждый бит на два столбца влево, два левых бита теряются, а справа входят два нуля
Сдвиг влево на 2: каждый бит перемещается на 2 позиции влево, старшие биты теряются, а справа заполняются нулями

Результат — 11010100 (212), что равно $53 \times 4$. Два старших бита были потеряны, а справа добавились два нуля. Если из конца «выталкивается» 1, эта информация теряется навсегда.

1.1

Дополнительный код

До сих пор рассматривались только положительные числа. Дополнительный код позволяет 8-битному регистру хранить также и отрицательные числа.

В дополнительном коде левый бит (самый старший значащий бит, или MSB) имеет отрицательное значение разряда:

-128  64  32  16  8  4  2  1
  • Если MSB равен 0, число положительное.
  • Если MSB равен 1, число отрицательное.

Чтобы сделать положительное число отрицательным: запишите положительное двоичное число, инвертируйте все биты (0↔1), затем прибавьте 1.

Пример: получить $-40$.

  • $+40$ = 00101000
  • инверсия битов = 11010111
  • прибавление 1 = 11011000

Таким образом, $-40$ = 11011000. Проверка путем сложения значений разрядов: $-128 + 64 + 16 + 8 = -40$.

Таблица дополнительного кода для 8 бит, где самый старший бит имеет вес минус 128, выделен пример 11011000, соответствующий -40
Старший значащий бит равен −128, поэтому 11011000 = −128 + 64 + 16 + 8 = −40

Чтобы прочитать отрицательное число в дополнительном коде, просто сложите значения разрядов (MSB учитывается как $-128$). Диапазон 8-битного числа в дополнительном коде составляет от $-128$ до $+127$.

1.2

Представление текста

Программа
Кандидаты должны уметь: Примечания и рекомендации
1 Понять, как и почему компьютер представляет текст, и использовать наборы символов, включая американский стандартный код обмена информацией (ASCII) и Unicode • Текст преобразуется в двоичный код для обработки компьютером • Unicode позволяет представить больший диапазон символов и знаков, чем ASCII, включая разные языки и эмодзи • Unicode требует большего количества бит на символ, чем ASCII
2 Понять, как и почему компьютер представляет звук, включая влияние частоты дискретизации и глубины дискретизации • Звуковая волна подвергается дискретизации для преобразования звука в двоичный код, который обрабатывается компьютером • Частота дискретизации — это количество выборок, сделанных за секунду • Глубина дискретизации — это количество бит на один образец • Точность записи и размер файла увеличиваются при повышении частоты и глубины дискретизации
3 Понимать, как и почему компьютер представляет изображение, включая влияние разрешения и глубины цвета • Изображение представляет собой последовательность пикселей, преобразованных в двоичный код, который обрабатывается компьютером • Разрешение — это количество пикселей в изображении • Глубина цвета — это количество бит, используемых для представления каждого цвета • Размер файла и качество изображения увеличиваются по мере роста разрешения и глубины цвета

Источник: Программа Cambridge International

Компьютеры хранят текст, присваивая каждому символу номер, а затем сохраняя этот номер в двоичном виде. Совокупность символов, доступных компьютеру, вместе с их номерами, называется набором символов.

  • ASCII использует 7 бит на символ, поэтому содержит 128 различных символов. Этого достаточно для английских букв, цифр и распространенных знаков препинания.
  • Unicode использует больше бит на символ. Он может представлять значительно больше символов — многие языки, а также знаки и эмодзи.

Поскольку набор Unicode содержит больше символов, ему требуется больше бит на символ, чем ASCII, поэтому тот же текст занимает больше места для хранения.

ASCII использует семь бит на символ для 128 символов, чего достаточно для английского; Unicode использует больше бит на символ для гораздо большего количества символов, включая множество языков и эмодзи, но требует больше памяти
ASCII использует 7 бит для 128 символов; Unicode использует больше бит для гораздо большего количества символов, но требует больше памяти
1.2

Представление звука

Звуковая волна плавная и постоянно изменяется. Для её хранения компьютер измеряет высоту волны через равные промежутки времени. Этот процесс называется дискретизацией, а каждое измерение — это выборка (сэмпл).

Плавная звуковая волна с вертикальными линиями через равные интервалы времени, измеряющими её высоту, отмечены интервал дискретизации и амплитуда
Дискретизация фиксирует высоту (амплитуду) волны в равные моменты времени
  • частота дискретизации — это количество выборок, сделанных каждую секунду (измеряется в Гц).
  • глубина дискретизации — это количество бит, используемых для каждой выборки. Высота волны в точке выборки называется её амплитудой.

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

Исследовать

Представление звука

y = a sin(bt + c)

Звук — это волна; дискретизация фиксирует его высоту множество раз в секунду.

English Русский
sampling/ˈsæmplɪŋ/ дискретизация (sampling)
sample rate/ˈsæmpl reɪt/ частота дискретизации
sample resolution/ˈsæmpl ˌrezəˈluːʃn/ разрешение выборки
amplitude/ˈæmplɪtjuːd/ точке амплитуды
1.2

Представление изображений

Изображение компьютера состоит из сетки маленьких точек, называемых пикселями.

Сетка 8 на 8 пикселей, образующих простую цветную картинку, один квадрат подписан как один пиксель
Растровое изображение — это сетка пикселей; разрешение показывает, сколько пикселей оно содержит
  • разрешение — это количество пикселей в изображении (например, $1920 \times 1080$).
  • глубина цвета — это количество бит, используемых для хранения цвета каждого пикселя.

Более высокое разрешение и большая глубина цвета дают изображение лучшего качества, но увеличивают размер файла.

English Русский
pixel/ˈpɪksl/ пиксель
resolution/ˌrezəˈluːʃn/ роздільна здатність
colour depth/ˈkʌlə depθ/ глубина цвета
compression/kəmˈpreʃn/ сжатие
bandwidth/ˈbændwɪdθ/ пропускная способность
transmission/trænˈsmɪʃn/ передача
lossless/ˈlɒsləs/ без потерь
run-length encoding/rʌn leŋθ enˈkəʊdɪŋ/ кодировка длин серий
lossy/ˈlɒsi/ с потерями
1.3

Измерение объема хранилища данных

Программа
Кандидаты должны уметь: Примечания и рекомендации
1 Понимать, как измеряется объем хранимых данных • Включая: – бит – ниббл – байт – кибибайт (KiB) – мебибайт (MiB) – гибибайт (GiB) – тебибайт (TiB) – пебибайт (PiB) – эксибайт (EiB) • Количество единиц предыдущей размерности в размере хранилища данных, например: – 8 бит в байте – 1024 мебибайта в гибибайте
2 Вычислять размер файла изображения и звукового файла, используя предоставленные данные • Ответы должны быть даны в единицах измерения, указанных в задании. Расчеты должны использовать значение 1024, а не 1000 • Предоставленная информация может включать: – разрешение и глубину цвета изображения – частоту дискретизации, глубину и продолжительность звуковой дорожки
3 Понимать назначение и необходимость сжатия данных • Сжатие существует для уменьшения размера файла • Последствия этого процесса, например: – требуется меньшая пропускная способность – требуется меньше места для хранения – сокращается время передачи
4 Понимать, как файлы сжимаются с использованием методов потерянного и без потерь • Потерянное сжатие уменьшает размер файла за счет необратимого удаления данных, например, снижения разрешения или глубины цвета, снижения частоты дискретизации или глубины • Без потерь сжатие уменьшает размер файла без необратимой потери данных, например, кодирование длин серий (RLE)

Источник: Программа Cambridge International

Объем хранилища данных измеряется в следующих единицах. Ниббл равен 4 битам, байт — 8 битам; начиная с кибибайта, каждая следующая единица в 1024 раза больше предыдущей (так как $1024 = 2^{10}$ подходит для двоичной системы).

Единица Равно
бит одна единичная 0 или 1
ниббл 4 бита
байт 8 бит
кибибайт (KiB) 1024 байта
мебибайт (MiB) 1024 KiB
гибибайт (GiB) 1024 MiB
тебибайт (TiB) 1024 GiB
пебибайт (PiB) 1024 TiB
эксибайт (EiB) 1024 PiB
Жесткие диски: хранение измеряется в байтах — для определения размера файла изображения нужны ширина × высота × глубина цвета
Жесткие диски: хранение измеряется в байтах — для определения размера файла изображения нужны ширина × высота × глубина цвета
English Русский
storage/ˈstɔːrɪdʒ/ хранилище
sound wave/saʊnd weɪv/ звуковая волна
1.3

Вычисление размера файла

Размер файла изображения (в битах) $=$ разрешение $\times$ глубина цвета $=$ ширина $\times$ высота $\times$ глубина цвета.

Пример: изображение размером $1024 \times 1024$ пикселей с глубиной цвета 2 байта ($= 16$ бит).

  • биты $= 1024 \times 1024 \times 16 = 16\,777\,216$ бит
  • байты $= \div 8 = 2\,097\,152$ байт
  • KiB $= \div 1024 = 2048$ KiB
  • MiB $= \div 1024 = 2$ MiB

Размер файла звука (в битах) $=$ частота дискретизации $\times$ глубина дискретизации $\times$ продолжительность в секундах.

Всегда делите на 1024 (не на 1000), чтобы перевести в KiB, MiB и так далее. Дайте ответ в единице, указанной в вопросе.

Разобранный пример. Звук записан в течение 30 секунд при частоте дискретизации 8,000 Гц и разрешении выборки 16 бит. Найдите размер файла в кибибайтах (КиБ).

  • биты $= 8\,000 \times 16 \times 30 = 3\,840\,000$ бит
  • байты $= 3\,840\,000 \div 8 = 480\,000$ байт
  • KiB $= 480\,000 \div 1024 \approx 469$ KiB
1.3

Сжатие

Сжатие уменьшает размер файла. Меньший файл:

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

Существует два типа.

Сжатие без потерь

Сжатие без потерь уменьшает размер файла с полным сохранением данных. Исходный файл можно восстановить точно.

Один из методов — кодирование длин серий (RLE). Оно заменяет последовательность повторяющихся значений одной копией этого значения и счетчиком, указывающим, сколько раз оно повторяется. Например, WWWWWWWW (8 белых) сохраняется как "8 W". Это работает хорошо, когда данные содержат много повторов.

Полоса из 8 белых, затем 4 красных квадратов, сжатая в пары 8 W и 4 R
Кодирование длин серий хранит каждую серию один раз как количество и значение

Сжатие с потерями

Сжатие с потерями делает файл значительно меньше за счёт постоянного удаления некоторых данных. Удалённые данные невозможно восстановить. Например:

  • снижение разрешения или глубины цвета изображения;
  • снижение частоты дискретизации или разрешения звука.

Используйте сжатие без потерь, когда необходимо сохранить каждую деталь (текстовые и программные файлы). Используйте сжатие с потерями для фотографий, музыки и видео, где небольшая потеря качества оправдана получением гораздо меньшего файла.

Исследовать

Кодирование длин серий

Наблюдайте, как повторяющиеся символы сжимаются в подсчет — простая без потерь компрессия.

1.3

Советы для экзамена

  • Преобразование десятичной системы → двоичной: вычитайте значения разрядов (128, 64, 32 …); двоичная → десятичная: складывайте значения разрядов, содержащих 1.
  • Для преобразования в шестнадцатеричную систему сгруппируйте двоичное число на нибблы по 4 бита справа; каждый ниббл соответствует ровно одной цифре шестнадцатеричного числа.
  • Переполнение происходит, когда результат требует больше бит, чем вмещает регистр (8-битный регистр хранит только 0–255), поэтому лишний бит теряется.
  • Размер файла в битах: для изображения — ширина × высота × глубина цвета; для звука — частота дискретизации × разрешение × секунды. Разделите на 8 для получения байтов, затем на 1024 для каждой следующей единицы измерения.
  • Сжатие без потерь сохраняет каждый бит (текст; кодирование длин серий); сжатие с потерями постоянно удаляет данные (фотографии, музыка) для создания значительно меньшего файла.

Интерактивные уроки по этой теме

Пройдите его шаг за шагом с упражнениями мгновенной проверки.

Архив экзаменационных работ

Больше тем в Информатика IGCSE

Войти или создать аккаунт

IGCSE, A-Level & AP