Основы систем счисления

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

1. Введение в системы счисления: история, определения и классификация на позиционные и непозиционные

Введение в системы счисления: история, определения и классификация на позиционные и непозиционные

Добро пожаловать в курс «Основы систем счисления». Мы начинаем наше путешествие с фундаментальных понятий. Прежде чем учиться переводить числа из двоичной системы в шестнадцатеричную или понимать, как компьютер хранит данные, нам нужно разобраться: а что такое число вообще? Как люди научились записывать количества и почему способ записи имеет решающее значение для математики и технологий?

Что такое система счисления?

Представьте, что вы древний пастух. У вас есть стадо овец. Как убедиться, что вечером вернулись все овцы, которые ушли утром? Скорее всего, вы будете использовать камешки: одна овца — один камешек. Или делать зарубки на палке.

Это и есть простейшая система счисления. Но если овец тысяча? Носить с собой мешок с тысячей камней неудобно. Человечеству понадобился способ записывать большие количества компактно.

> Система счисления — это знаковая система, способ записи чисел с помощью письменных знаков (цифр).

В любой системе счисления есть два главных понятия:

  • Цифры — это символы, из которых состоят числа (как буквы в алфавите).
  • Алфавит — это полный набор всех допустимых цифр.
  • Например, в привычной нам десятичной системе алфавит состоит из десяти знаков: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

    !Эволюция записи числа 5 от простых зарубок до современной арабской цифры.

    История: от зарубок до нуля

    История чисел — это история борьбы за краткость и удобство вычислений.

    Унарная система

    Самая древняя система — унарная (от латинского unus — один). В ней есть только один символ — палочка, черточка или узелок. Чтобы записать число 5, нужно нарисовать 5 палочек: |||||. Это удобно для счета на пальцах, но попробуйте записать так население Китая.

    Древний Египет и Рим

    Позже люди придумали группировать знаки. В Древнем Риме, например, ввели специальные символы для 5 (), 10 (), 50 (), 100 () и так далее. Это значительно сократило запись. Число 123 уже не требовало 123 палочек, а записывалось как .

    Великое изобретение Индии

    Настоящая революция произошла в Индии примерно в V веке н.э. Индийские математики придумали позиционную запись и, что самое важное, ввели понятие нуля (шунья). Позже эти знания переняли арабы, и через них они попали в Европу. Именно поэтому наши цифры называются «арабскими», хотя родом они из Индии.

    Классификация систем счисления

    Все системы счисления делятся на два больших класса: непозиционные и позиционные. Различие между ними фундаментально и определяет, насколько легко нам будет складывать, вычитать и умножать.

    Непозиционные системы счисления

    В непозиционных системах счисления значение цифры не зависит от её положения (позиции) в числе.

    Самый яркий пример — римская система счисления.

    Рассмотрим число (тридцать). В нем три одинаковых символа . Каждый из них обозначает ровно 10 единиц.

    * Первый — это 10. * Второй — это 10. * Третий — это 10.

    Сумма: .

    Где бы ни стоял символ — в начале, в середине или в конце — он (почти всегда) означает просто количество 10. Мы просто суммируем значения всех цифр. Именно поэтому такие системы еще называют аддитивными (от англ. add — складывать).

    Недостатки непозиционных систем: * Сложность записи больших чисел: нужны всё новые и новые символы для тысячи, миллиона и т.д. * Невозможность простых вычислений: попробуйте умножить на в столбик. Это практически невозможно без перевода в другую систему или использования абака. * Отсутствие нуля: в римской системе нет знака для «ничего».

    Позиционные системы счисления

    В позиционных системах значение цифры зависит от её места (позиции) в записи числа.

    Это та система, которой мы пользуемся каждый день — десятичная.

    Рассмотрим число . Здесь использован один и тот же символ — тройка. Но его «вес» меняется:

  • Самая правая тройка означает просто 3 единицы.
  • Средняя тройка означает 3 десятка (то есть 30).
  • Левая тройка означает 3 сотни (то есть 300).
  • Итоговое значение: .

    Чувствуете разницу с римским ? В римской системе три икса — это просто . В позиционной системе сдвиг цифры влево увеличивает её значение в определенное количество раз.

    !Визуальное сравнение того, как формируется значение числа в непозиционной и позиционной системах.

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

    Ключевой характеристикой любой позиционной системы является её основание.

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

    В нашей повседневной жизни основание равно 10. Почему? Скорее всего, просто потому, что у нас 10 пальцев на руках. Если бы мы были персонажами мультфильмов с четырьмя пальцами на руке, мы бы, вероятно, использовали восьмеричную систему.

    В информатике используются другие основания: * 2 (двоичная): алфавит {0, 1}. * 8 (восьмеричная): алфавит {0, 1, 2, 3, 4, 5, 6, 7}. * 16 (шестнадцатеричная): алфавит {0-9, A-F}.

    Развернутая форма записи числа

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

    Формула выглядит так:

    Где: * — само число. * — знак суммы (сигма). * — номер позиции (разряда), начиная с нуля справа налево. * — цифра, стоящая в позиции . * — основание системы счисления (например, 10). * — количество разрядов в числе.

    Не пугайтесь формулы, на примере она выглядит очень просто.

    Возьмем число 528 в десятичной системе ().

  • Цифра 8 стоит на позиции 0 (единицы). Это .
  • Цифра 2 стоит на позиции 1 (десятки). Это .
  • Цифра 5 стоит на позиции 2 (сотни). Это .
  • Запишем сумму:

    Где: * — число 528 в десятичной системе. * — это 100 (вес сотен). * — это 10 (вес десятков). * — это 1 (вес единиц, так как любое число в степени 0 равно 1).

    Давайте проверим:

    Всё сходится! Эта формула универсальна. Она работает и для двоичной системы, и для любой другой. В следующих статьях мы будем использовать именно эту логику, чтобы переводить числа из «компьютерного» языка в человеческий.

    Сравнение систем

    Подведем итог различий в виде таблицы:

    | Характеристика | Непозиционные (например, Римская) | Позиционные (например, Десятичная) | | :--- | :--- | :--- | | Зависимость от места | Значение цифры не зависит от позиции | Значение цифры зависит от позиции | | Набор цифр | Может быть бесконечным (нужны новые знаки для больших чисел) | Ограничен (алфавит), знаки повторяются | | Нуль | Обычно отсутствует | Обязателен для обозначения пустых разрядов | | Арифметика | Очень сложная | Простая, поразрядная |

    Заключение

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

    В следующей статье мы углубимся в мир компьютеров и разберем двоичную систему счисления — язык, на котором «думают» процессоры.

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

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

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

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

    Почему именно два?

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

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

    У транзистора есть два устойчивых состояния:

  • Ток идет (высокое напряжение) — мы договорились считать это единицей (1).
  • Ток не идет (низкое напряжение) — мы договорились считать это нулем (0).
  • !Иллюстрация принципа работы транзистора как переключателя: выключено — 0, включено — 1.

    Если бы мы захотели создать десятичный компьютер, нам пришлось бы различать 10 уровней напряжения. Например: * 0 Вольт = цифра 0 * 1 Вольт = цифра 1 * ... * 9 Вольт = цифра 9

    Любая небольшая помеха в сети или нагрев оборудования могли бы превратить цифру 3 (3 Вольта) в цифру 4 (4 Вольта), что привело бы к фатальным ошибкам в вычислениях. Двоичная система обеспечивает надежность: сигнал либо есть, либо его нет. Перепутать их сложно.

    Математика двоичной системы

    Двоичная система счисления — это позиционная система с основанием . Это значит, что: * Алфавит состоит всего из двух цифр: 0 и 1. * Вес каждого разряда увеличивается в 2 раза при движении справа налево.

    Вспомним развернутую форму записи числа из прошлой лекции:

    Где: * — число. * — знак суммирования. * — цифра в позиции (0 или 1). * — основание системы (в данном случае 2). * — номер разряда (начинается с 0 справа).

    Как прочитать двоичное число?

    Давайте расшифруем двоичное число 1011. Что оно означает на нашем человеческом языке?

    Распишем его по разрядам, помня, что основание — двойка:

  • Крайняя правая цифра (1) стоит на позиции 0. Её вес .
  • Следующая цифра (1) стоит на позиции 1. Её вес .
  • Следующая цифра (0) стоит на позиции 2. Её вес .
  • Крайняя левая цифра (1) стоит на позиции 3. Её вес .
  • Подставим в формулу:

    Где: * — исходное двоичное число. * — это 1 умножить на 8. * — это 0 умножить на 4 (любое число, умноженное на 0, дает 0). * — это 1 умножить на 2. * — это 1 умножить на 1.

    Считаем сумму:

    Итак, двоичное число 1011 — это десятичное число 11.

    > Интересный факт: Люди, работающие с компьютерами, часто шутят: «В мире есть 10 типов людей: те, кто понимает двоичную систему, и те, кто нет». Теперь вы понимаете соль шутки: в двоичной системе — это в десятичной.

    Биты и Байты: единицы измерения информации

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

    Бит (Bit)

    Самая маленькая единица информации называется бит (англ. bit — сокращение от binary digit, двоичная цифра).

    > Бит — это один разряд двоичного кода, который может принимать значение только 0 или 1.

    Один бит — это очень мало. С помощью одного бита можно закодировать только два состояния: да/нет, черный/белый, мужчина/женщина. Чтобы хранить сложную информацию, биты объединяют в группы.

    Байт (Byte)

    Исторически сложилось так, что самой удобной группой оказалось 8 бит. Эту группу назвали байт.

    > Байт — это последовательность из 8 бит.

    Почему именно 8? С помощью 8 бит можно закодировать различных значений (от 00000000 до 11111111). Этого достаточно, чтобы закодировать все буквы латинского алфавита (строчные и заглавные), цифры, знаки препинания и некоторые управляющие символы.

    !Визуализация структуры байта, состоящего из 8 бит.

    Таблица единиц измерения

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

    | Единица | Обозначение | Объем в битах/байтах | Примерный аналог | | :--- | :--- | :--- | :--- | | Бит | б (b) | 0 или 1 | Ответ на вопрос «Да/Нет» | | Байт | Б (B) | 8 бит | Одна буква в тексте | | Килобайт | КБ (KB) | байта | Небольшой текстовый файл | | Мегабайт | МБ (MB) | КБ | Минута музыки в MP3 | | Гигабайт | ГБ (GB) | МБ | Фильм в хорошем качестве | | Терабайт | ТБ (TB) | ГБ | Архив всех фото за жизнь |

    Как числа превращаются в информацию?

    Компьютер «видит» только нули и единицы. Как же мы видим на экране текст, картинки и видео? Все это — результат кодирования.

    Текст

    Каждому символу присваивается уникальный числовой код. Самая известная таблица кодировки — ASCII (American Standard Code for Information Interchange).

    Например: * Буква A имеет код 65. В двоичной системе это . * Буква B имеет код 66. В двоичной системе это . * Символ пробела имеет код 32. В двоичной системе это .

    Когда вы нажимаете клавишу «A» на клавиатуре, в компьютер отправляется сигнал 01000001. Процессор понимает, что нужно вывести на экран символ, соответствующий этому коду.

    Современные системы используют кодировку Unicode (например, UTF-8), которая позволяет закодировать миллионы символов, включая эмодзи 🐱, иероглифы и буквы всех языков мира. Но принцип остается тем же: каждому символу соответствует число.

    Изображения

    Любое изображение на экране состоит из точек — пикселей. Цвет каждого пикселя тоже кодируется числами.

    В популярной модели RGB (Red, Green, Blue) цвет получается смешиванием красного, зеленого и синего. На каждый цвет отводится 1 байт (число от 0 до 255).

    * Красный пиксель: (255, 0, 0) 11111111 00000000 00000000 * Белый пиксель: (255, 255, 255) 11111111 11111111 11111111 * Черный пиксель: (0, 0, 0) 00000000 00000000 00000000

    Фотография — это просто огромная таблица таких чисел.

    Преимущества и недостатки двоичной системы

    Подведем итог, почему двоичная система стала стандартом де-факто.

    Преимущества:

  • Простота реализации: Нужен элемент всего с двумя состояниями (есть ток / нет тока).
  • Помехоустойчивость: Легко отличить 0 от 1 даже при наличии электрических шумов.
  • Универсальность: С помощью 0 и 1 можно закодировать любую информацию (числа, текст, звук, видео).
  • Недостатки:

  • Громоздкость записи: Числа получаются очень длинными. Сравните: (3 знака) и (8 знаков).
  • Именно из-за громоздкости записи программисты редко работают с «голым» двоичным кодом. Для удобства чтения двоичных данных были придуманы восьмеричная и шестнадцатеричная системы счисления, которые позволяют записывать двоичные данные компактно. О них мы поговорим в следующей статье.

    Заключение

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

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