Двоичная система счисления

Двоичная система счисления записывает числа только двумя цифрами: 0 и 1. Чтобы не путать системы счисления, в этой главе двоичные числа отмечаются индексом ₂, а десятичные - индексом ₁₀. Например: 1011₂ = 11₁₀.
Зачем это нужно
Человек в повседневной жизни чаще использует десятичную систему счисления с десятью цифрами: от 0 до 9. Цифровой электронике удобно различать два устойчивых состояния, поэтому внутри компьютерной техники числа, команды, символы, звук и изображения представляются последовательностями 0 и 1.
Двоичная запись встречается при изучении:
- памяти и типов данных;
- цифровой электроники;
- сетевых адресов и протоколов;
- прав доступа и флагов;
- микроконтроллеров;
- логических и битовых операций.
Понимание двоичной системы помогает увидеть связь между привычным числом и его представлением внутри цифрового устройства.
Как обозначать систему счисления
Одинаковая последовательность цифр может обозначать разные значения в разных системах счисления.
| Запись | Система счисления | Значение в десятичной системе |
|---|---|---|
10₁₀ | десятичная | десять |
10₂ | двоичная | два |
101₁₀ | десятичная | сто один |
101₂ | двоичная | пять |
В обычном тексте индекс иногда опускают, когда система счисления очевидна. В учебных примерах этой главы индекс указывается явно.
Запись 1011 без индекса неоднозначна. Запись 1011₂ однозначно означает двоичное число, а 1011₁₀ - десятичное.
Главная идея
В позиционной системе значение цифры зависит от ее места - разряда.
- в десятичной системе веса разрядов равны степеням числа
10; - в двоичной системе веса разрядов равны степеням числа
2.
десятичные веса: 10⁰ = 1, 10¹ = 10, 10² = 100, 10³ = 1000
двоичные веса: 2⁰ = 1, 2¹ = 2, 2² = 4, 2³ = 8

В таблице исходное значение указано сначала в десятичной системе, затем - в двоичной.
| Исходное число, десятичная СС | Двоичная запись | Степени двойки | Разложение |
|---|---|---|---|
0₁₀ | 0000₂ | нет выбранных степеней | 0₁₀ |
1₁₀ | 0001₂ | 2⁰ | 1₁₀ |
2₁₀ | 0010₂ | 2¹ | 2₁₀ |
3₁₀ | 0011₂ | 2¹, 2⁰ | 2₁₀ + 1₁₀ |
5₁₀ | 0101₂ | 2², 2⁰ | 4₁₀ + 1₁₀ |
8₁₀ | 1000₂ | 2³ | 8₁₀ |
11₁₀ | 1011₂ | 2³, 2¹, 2⁰ | 8₁₀ + 2₁₀ + 1₁₀ |
13₁₀ | 1101₂ | 2³, 2², 2⁰ | 8₁₀ + 4₁₀ + 1₁₀ |
Разберем число 1011₂ по разрядам.
| Позиция | Степень | Вес в десятичной СС | Двоичная цифра | Вклад в результат |
|---|---|---|---|---|
| четвертая справа | 2³ | 8₁₀ | 1 | 8₁₀ |
| третья справа | 2² | 4₁₀ | 0 | 0₁₀ |
| вторая справа | 2¹ | 2₁₀ | 1 | 2₁₀ |
| первая справа | 2⁰ | 1₁₀ | 1 | 1₁₀ |
1011₂ = 1 · 8₁₀ + 0 · 4₁₀ + 1 · 2₁₀ + 1 · 1₁₀ = 11₁₀
Перевод из двоичной системы в десятичную
Чтобы перевести двоичное число в десятичное:
- подпиши веса разрядов справа налево:
1₁₀,2₁₀,4₁₀,8₁₀и далее; - выберите веса, под которыми стоит двоичная цифра
1; - сложи выбранные значения.
Пример 1
0110₂ = 0 · 8₁₀ + 1 · 4₁₀ + 1 · 2₁₀ + 0 · 1₁₀ = 6₁₀
Пример 2
1001₂ = 1 · 8₁₀ + 0 · 4₁₀ + 0 · 2₁₀ + 1 · 1₁₀ = 9₁₀
Пример 3
1111₂ = 1 · 8₁₀ + 1 · 4₁₀ + 1 · 2₁₀ + 1 · 1₁₀ = 15₁₀
Перевод из десятичной системы в двоичную
Для небольшого числа удобно разложить его на степени двойки.
Пример: 13₁₀
Используем веса 8₁₀, 4₁₀, 2₁₀, 1₁₀:
13₁₀ = 8₁₀ + 4₁₀ + 1₁₀
| Вес в десятичной СС | 8₁₀ | 4₁₀ | 2₁₀ | 1₁₀ |
|---|---|---|---|---|
| Степень двойки | 2³ | 2² | 2¹ | 2⁰ |
| Используется? | 1 | 1 | 0 | 1 |
Получается:
13₁₀ = 1101₂
Еще два примера
6₁₀ = 4₁₀ + 2₁₀ = 0110₂
10₁₀ = 8₁₀ + 2₁₀ = 1010₂
Для больших чисел также применяют последовательное деление на 2₁₀, но метод степеней двойки лучше показывает смысл разрядов.
Бит и байт в двоичной записи
Один двоичный разряд называется битом. В каждом бите находится 0 или 1.
Количество различных комбинаций для n бит равно 2ⁿ.
| Количество бит | Число комбинаций, десятичная СС | Диапазон без знака, десятичная СС | Двоичный диапазон |
|---|---|---|---|
1₁₀ бит | 2₁₀ | от 0₁₀ до 1₁₀ | от 0₂ до 1₂ |
2₁₀ бита | 4₁₀ | от 0₁₀ до 3₁₀ | от 00₂ до 11₂ |
4₁₀ бита | 16₁₀ | от 0₁₀ до 15₁₀ | от 0000₂ до 1111₂ |
8₁₀ бит | 256₁₀ | от 0₁₀ до 255₁₀ | от 00000000₂ до 11111111₂ |
Восемь бит образуют один байт. Максимальное беззнаковое значение одного байта:
11111111₂ = 255₁₀
Значение 255₁₀ часто встречается в учебном программировании как максимальное значение одного байта. Однако диапазоны конкретных функций и устройств всегда нужно проверять по документации.
Беззнаковый тип использует все комбинации битов для нуля и положительных чисел. Для отрицательных значений нужна другая договоренность о представлении данных.
Двоичные данные в компьютере
Последовательность битов не обязательно используется как число. Например, 01000001₂ можно прочитать как:
- число
65₁₀; - код латинского символа
Aв подходящей кодировке; - восемь отдельных логических признаков;
- часть команды или изображения.
Смысл задается типом и форматом данных. Подробно эта тема рассматривается в главе «Хранение данных в памяти».
Двоичные состояния в роботах

Цифровой датчик может передавать одно из двух логических состояний. В такой таблице 0 и 1 обозначают именно состояния, а не результат счета.
| Левый датчик, состояние | Правый датчик, состояние | Возможная реакция программы |
|---|---|---|
0 | 0 | искать линию |
0 | 1 | корректировать движение вправо |
1 | 0 | корректировать движение влево |
1 | 1 | ехать прямо |
Конкретный смысл состояний зависит от подключения и программы. Например, у одного датчика 1 может означать «линия обнаружена», а у другого модуля то же событие может обозначаться 0.
Две линии сигналов образуют четыре комбинации. Их можно рассматривать и как двоичные коды:
00₂ = 0₁₀
01₂ = 1₁₀
10₂ = 2₁₀
11₂ = 3₁₀
Что запомнить про двоичную систему
| Десятичная система | Двоичная система |
|---|---|
использует цифры от 0 до 9 | использует цифры 0 и 1 |
веса разрядов: степени 10 | веса разрядов: степени 2 |
запись 10₁₀ означает десять | запись 10₂ означает два |
| привычна для повседневного счета | удобна для цифровой техники |
Главное правило записи в учебных примерах:
двоичное число: индекс ₂
десятичное число: индекс ₁₀
Практика
Задание 1
Переведи числа из двоичной системы в десятичную.
| Двоичное число | Десятичное значение |
|---|---|
0011₂ | |
0101₂ | |
1000₂ | |
1111₂ |
Задание 2
Переведи числа из десятичной системы в двоичную, используя веса 8₁₀, 4₁₀, 2₁₀, 1₁₀.
| Десятичное число | Двоичная запись |
|---|---|
6₁₀ | |
9₁₀ | |
12₁₀ | |
14₁₀ |
Задание 3
У устройства есть три цифровых входа. Запишите все трехбитные комбинации, в которых ровно один вход имеет состояние 1. Рядом укажите значение каждой комбинации в десятичной системе.
Проверьте себя
- Почему запись числа без указания системы счисления может быть неоднозначной?
- Какое десятичное значение имеет
1001₂? - Как записать
12₁₀в двоичной системе? - Почему вес каждого следующего двоичного разряда увеличивается в
2₁₀раза? - Сколько комбинаций можно записать четырьмя битами?
- Почему набор битов не всегда является числом?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- Система счисления - способ записи чисел с помощью цифр и разрядов.
- Двоичная система - система счисления с цифрами
0и1. - Десятичная система - система счисления с цифрами от
0до9. - Основание системы счисления - количество разных цифр, используемых системой.
- Разряд - позиция цифры в записи числа.
- Вес разряда - значение разряда, определяемое степенью основания системы.
- Бит - один двоичный разряд.
- Байт - группа из восьми бит.
- Двоичный код - последовательность битов, смысл которой определяется правилами использования.
Связанные темы
- Устройство памяти - где хранятся биты и байты.
- Хранение данных в памяти - как один набор битов получает разный смысл.
- Математика в двоичной системе счисления - арифметические и битовые операции.
- Логические элементы - правила обработки логических состояний
0и1.
Источники
- Python Documentation.
bin(): https://docs.python.org/3/library/functions.html#bin - Python Documentation. Integer methods: https://docs.python.org/3/library/stdtypes.html#additional-methods-on-integer-types
- Arduino Docs. Bit Math: https://docs.arduino.cc/learn/programming/bit-math/