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

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

Счёт в двоичной системе

Суть Строка битов кодирует число через позиционную запись: каждый разряд стоит вдвое больше соседнего справа. Понимание этого принципа удвоения позволяет читать и записывать двоичные числа и переводить их в десятичные и обратно.
◷ 20 min

Ты уже знаешь, что бит — это одиночный переключатель с двумя состояниями: он хранит 0 или 1. Но один переключатель может ответить только на один вопрос «да/нет». Как тогда строка из восьми переключателей кодирует число 42, или 200, или 255? Ответ — тот же приём, что использует твой калькулятор, ни разу тебе об этом не сообщив: позиционная запись. Тот же принцип, по которому цифра 3 стоит тридцать в «32» и триста в «307», работает в двоичной системе — только каждый разряд стоит не в десять, а ровно в два раза больше предыдущего.

Цель

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

1

Позиционная запись: та же идея, что в десятичной системе, но с основанием 2 вместо 10. В десятичной системе, которую ты уже знаешь, каждый разряд имеет вес, равный степени десяти: разряд единиц — 10⁰ = 1, разряд десятков — 10¹ = 10, разряд сотен — 10² = 100, и так далее. Число — это просто сумма каждой цифры, умноженной на её весовой коэффициент. В двоичной системе единственное отличие: основание равно 2 вместо 10, поэтому весá — степени двойки: 2⁰ = 1, 2¹ = 2, 2² = 4, 2³ = 8, 2⁴ = 16 и так далее. Каждая двоичная цифра (0 или 1) умножается на свой весовой коэффициент, и результаты складываются.

2

Почему каждый разряд стоит вдвое больше соседнего справа. Подумай о том, что означает «перенос». Когда счёт доходит до предела текущего разряда, происходит перенос в следующий. В десятичной системе предел — 9; в двоичной предел — 1: следующее после 1 значение переполняется и переносится. Именно этот вынужденный перенос объясняет, почему следующий разряд стоит 2: он представляет одно переполнение разряда ниже. Глубже: каждый добавленный в двоичное число разряд удваивает количество возможных паттернов. Один бит даёт 2 паттерна (0 и 1). Два бита дают 4 (00, 01, 10, 11). Три бита — 8. Каждый дополнительный бит умножает на 2, поэтому каждый разряд стоит ровно вдвое больше предыдущего.

3

Чтение двоичного числа: умножь каждую 1 на её вес и суммируй. Для 8-битного паттерна 0 1 0 1 1 0 1 0 назначь веса справа налево — 1, 2, 4, 8, 16, 32, 64, 128. Только позиции, содержащие 1, вносят вклад: сложи их веса, а позиции с 0 игнорируй. Сумма — это десятичное значение двоичного числа.

0
128
1
64
0
32
1
16
1
8
0
4
1
2
0
1
Двоичное 01011010: под каждым битом показан его весовой коэффициент. Выделенные биты (значение 1) дают 64 + 16 + 8 + 2 = 90.
4

Запись двоичного числа: переводи десятичное в двоичное последовательным делением на 2. Чтобы узнать, какие биты включены для данного десятичного числа, делим его на 2 последовательно и записываем каждый остаток. Остатки, прочитанные с последнего к первому, дают двоичное число. Это работает потому, что деление на 2 «снимает» наименее значимый бит как остаток: нечётные числа имеют 1 на позиции единиц (остаток 1 при делении на 2), чётные — 0 (остаток 0). Каждое деление сдвигает значение на один битовый разряд вправо, поэтому повторение извлекает все биты от наименее значимого к наиболее значимому.

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

Почему остатки получаются в обратном порядке? Первое деление даёт тебе бит с весом 1 (самый правый), потому что именно этот бит определяет, нечётное число или чётное. Второе деление даёт бит с весом 2, и так далее. Поскольку мы собираем биты начиная с наименее значимого, в конце нужно перевернуть список, чтобы получить обычную запись двоичного числа слева направо.

Разбор примера

Перевод числа 13 в двоичное и обратно.

Десятичное → двоичное (последовательное деление):

ДелениеЧастноеОстаток
13 ÷ 261
6 ÷ 230
3 ÷ 211
1 ÷ 201

Остатки снизу вверх: 1, 1, 0, 1 → двоичное 1101.

Двоичное → десятичное (сумма весов):

1101 — назначаем веса справа налево: 1, 2, 4, 8.

БитВесВклад
111
020
144
188

Сумма: 8 + 4 + 0 + 1 = 13. Вернулись к исходному числу.

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

Частая ошибка — читать двоичное число слева направо, не назначая весов. Крайний левый бит имеет не вес 1 — он имеет наибольший вес в паттерне. В 8-битном числе крайний левый бит имеет вес 128. Всегда привязывай позицию с весом 1 к правому концу, а затем удваивай влево: 1, 2, 4, 8, 16, 32, 64, 128.

Практика 0 / 5

Чему равно десятичное значение 4-битного двоичного числа 1010? (Веса разрядов: 8, 4, 2, 1.) Введи число.

Чему равно десятичное значение двоичного числа 1111 (4 бита)? Введи число.

Переведи десятичное число 6 в 4-битное двоичное. Проверь: чему равно десятичное значение 0110?

Сколько различных значений может представить 4-битное двоичное число? (Посчитай от 0000 до 1111 включительно.) Введи количество.

Чему равно десятичное значение двоичного числа 10000000 (8 битов)? Введи число.

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

Почему добавление одного бита к двоичному паттерну ровно удваивает количество значений, которые этот паттерн может представить?

Итог

Двоичные числа используют позиционную запись — ровно как десятичные, но со степенями двойки вместо степеней десяти. Крайний правый бит имеет вес 1, следующий — 2, затем 4, 8, 16 — каждый разряд вдвое больше соседнего справа. Чтобы прочитать двоичное число, суммируй веса всех позиций с 1. Чтобы записать двоичное число, последовательно дели десятичное на 2 и читай остатки с последнего к первому. Добавление одного бита удваивает количество представимых значений, потому что каждый существующий паттерн получает двойника с новым битом, равным 1.

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

Trademarks belong to their respective owners. Editorial reference only.