awesome-everything EN
↑ Обратно к восхождению

Базовый CS с нуля

Биты и двоичный код

Суть Бит — наименьшая единица данных: однобитовый сигнал с двумя состояниями. Аппаратура использует ровно два состояния, потому что два уровня надёжнее всего различить несмотря на электрические помехи.
◷ 18 min

Каждый фрагмент данных, которого когда-либо касался твой компьютер — каждый введённый символ, каждый пиксель на этом экране, каждое число в каждом вычислении — хранится как набор ровно двух символов: 0 и 1. Не десяти цифр, как в привычной нам счётной системе. Не букв. Просто двух. Почему именно двух, и что это вообще значит на уровне железа?

Цель

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

1

Бит — наименьшая возможная единица информации. Слово «бит» — сокращение от binary digit (двоичная цифра), цифра из системы счисления с основанием 2. Пока привычные тебе десятичные цифры (от 0 до 9) — это десять символов, единственные двоичные цифры — 0 и 1. Один бит — это один выбор между двумя возможностями: выключено или включено, ложь или истина, низкий или высокий уровень. Вот и всё определение. Один бит не может представлять ничего тоньше этого одного двоичного выбора.

2

Аппаратура построена из переключателей, а переключатели имеют два состояния. Внутри компьютерного чипа — миллиарды крошечных транзисторов. Транзистор — это электрически управляемый переключатель: подай достаточное напряжение на управляющий вывод, и ток потечёт (переключатель включён, называем это 1); убери напряжение — ток останавливается (переключатель выключен, называем это 0). В обычной работе транзистор не имеет «промежуточного» состояния — он спроектирован так, чтобы быть надёжно включён или надёжно выключен. Это физическое ограничение и есть причина, по которой аппаратура говорит на языке двух символов.

3

Два состояния, а не десять — из-за электрических помех. В любой реальной схеме напряжение никогда не бывает идеально стабильным. Изменение температуры, соседние сигналы, колебания источника питания — всё это вызывает небольшие флуктуации. Если бы компьютер использовал десять уровней напряжения для десяти десятичных цифр (0 В для 0, 0,5 В для 1, 1,0 В для 2, … 4,5 В для 9), флуктуация всего в 0,2 В могла бы сдвинуть сигнал с одного уровня на соседний и испортить данные. При всего двух уровнях — скажем, «низкий» (0–1 В) и «высокий» (3–5 В) — между ними большой зазор. Небольшая флуктуация почти никогда не пересекает этот зазор. Чем больше зазор относительно уровня помех, тем надёжнее аппаратура распознаёт, в каком состоянии находится сигнал. Два состояния максимизируют этот зазор при заданном напряжении питания — именно поэтому победила двоичная система.

Почему это работает

Инженеры пробовали многоуровневое хранение. Современные чипы NAND-флеш хранят по 2, 3 или даже 4 бита в ячейке, различая от четырёх до шестнадцати уровней напряжения на ячейку (MLC, TLC, QLC). Это работает только потому, что флеш-память оптимизирована под высокую плотность хранения и мирится с более медленным и менее надёжным чтением, которое исправляет сильное помехозащитное кодирование. Логика общего назначения — та, что запускает твою программу на полной скорости — до сих пор использует два состояния, потому что два состояния одновременно и самые быстрые, и наиболее защищённые от помех.

4

Один бит сам по себе слишком мал для практического применения. Один бит может сказать только «да или нет». Чтобы представлять более широкий диапазон значений, аппаратура группирует биты вместе. Восемь битов, сгруппированных вместе, образуют байт — достаточно для хранения одного из 256 различных значений (от 0 до 255). Современное 64-битное целое число использует 64 бита и может хранить одно из более чем 18 квинтиллионов значений. Но сколько бы битов ты ни сгруппировал, каждая группа в конечном счёте состоит из отдельных битов, каждый из которых — транзистор, включённый или выключенный.

0
b7
1
b6
0
b5
1
b4
0
b3
0
b2
1
b1
1
b0
Один байт: восемь битовых ячеек, каждая хранит ровно 0 или 1. Выделенные ячейки хранят 1.
Разбор примера

Чтение строки битов.

Предположим, чип хранит такой байт: 0 1 0 1 0 0 1 1.

Каждая ячейка содержит один бит. Читая слева направо, видим: выкл, вкл, выкл, вкл, выкл, выкл, вкл, вкл. Каждая ячейка «вкл» — транзистор с высоким напряжением; каждая «выкл» — с низким. Здесь ровно восемь переключателей, и паттерн 01010011 — один из ровно 256 возможных паттернов, которые может образовать байт из восьми переключателей. Следующие уроки покажут, как такой паттерн кодирует число или символ — но сейчас обрати внимание: вся система построена из ничего, кроме двухстороннего выбора: 0 или 1.

Ни один переключатель не бывает «слегка включён». Ни один переключатель не хранит значение между 0 и 1. Надёжность всей системы держится на этом чётком разграничении.

Частая ошибка

Распространённое первое заблуждение: 0 означает «ничего не хранится». Это не так. Бит, установленный в 0, активно хранит значение ноль — транзистор надёжно выключен. Ячейка занята; её значение просто равно нулю. Неинициализированная ячейка памяти не равна нулю по умолчанию; она хранит то, что было записано туда последним. Ноль — это настоящее, определённое значение.

Практика 0 / 5

Сколько различных состояний может хранить один бит? Введи число.

Сколько битов в одном байте? Введи число.

Сколько различных значений может хранить 2-битный паттерн? (00, 01, 10, 11 — посчитай их.) Введи число.

Сколько различных значений может хранить один байт (8 битов)? Введи число.

Сигнал напряжения может быть либо 0,2 В, либо 4,8 В. Уровень шума в цепи — ±0,3 В. Может ли схема надёжно различить два состояния? Введи 1 (да) или 0 (нет).

Проверь себя
Викторина

Почему компьютерная аппаратура использует ровно два состояния (0 и 1), а не десять (0–9)?

Итог

Бит — двоичная цифра: единица с двумя состояниями, атом всех цифровых данных. Аппаратура представляет его транзистором, который либо включён (1), либо выключен (0). Два состояния используются вместо десяти, потому что два уровня напряжения оставляют широкий зазор помехозащиты — небольшие электрические флуктуации не могут легко превратить 0 в 1 или наоборот. Биты объединяются в байты (8 битов) и более крупные единицы для представления более богатых значений, но каждая группа в конечном счёте состоит из отдельных битов, каждый из которых — твёрдый, недвусмысленный выбор между двумя состояниями.

Продолжить восхождение ↑Счёт в двоичной системе
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.