1. Системы счисления, двоичная арифметика и кодирование данных
Системы счисления, двоичная арифметика и кодирование данных
Добро пожаловать на курс «Основы логики ЭВМ и цифровой схемотехники». Это первая и фундаментальная статья, с которой начинается погружение в мир того, как на самом деле «думают» компьютеры. Мы привыкли видеть на экранах текст, изображения, видео и сложные интерфейсы, но в глубине процессора существует только два состояния: есть сигнал или нет сигнала.
В этой статье мы разберем, как с помощью всего двух символов можно описать Вселенную, как научить машину считать и как хранить информацию.
Почему компьютеры используют двоичную систему?
Человечество использует десятичную систему счисления () по простой причине — у нас десять пальцев на руках. Это удобно для нас, но крайне неудобно для электроники.
Чтобы создать устройство, оперирующее десятью уровнями напряжения (например, 0В, 1В, 2В... 9В), потребовалась бы невероятно сложная и дорогая схема, подверженная помехам. Гораздо проще и надежнее различать всего два состояния:
Минимальная единица информации, принимающая значение 0 или 1, называется бит (bit — binary digit).
!Иллюстрация представления байта информации через состояние включенных и выключенных лампочек
Позиционные системы счисления
Любая современная система счисления, будь то привычная нам десятичная или компьютерная двоичная, является позиционной. Это значит, что значение цифры зависит от её места (позиции) в числе.
Рассмотрим привычное число в десятичной системе. Мы понимаем его как:
Где: * — цифры числа. * — основание системы счисления. * — разряды (степени основания), считая справа налево, начиная с нуля.
Двоичная система (Binary)
В двоичной системе основанием является число 2, а допустимые цифры — только 0 и 1. Давайте переведем двоичное число в десятичное, используя тот же принцип разложения по степеням:
Где: * — это . * — это . * — это . * — это (любое число в степени 0 равно 1).
Складываем результаты:
Таким образом, в двоичной системе — это в десятичной.
Шестнадцатеричная система (Hexadecimal)
Записывать длинные последовательности нулей и единиц (например, ) неудобно для восприятия человеком. Поэтому в программировании и схемотехнике используют шестнадцатеричную систему. Она компактнее и легко переводится в двоичную.
Основание системы: 16. Цифры: , а дальше нам не хватает арабских цифр, поэтому используются латинские буквы: A (10), B (11), C (12), D (13), E (14), F (15).
> Один символ шестнадцатеричной системы кодирует ровно 4 бита (тетраду) двоичной информации.
Таблица соответствия:
| DEC (10) | BIN (2) | HEX (16) | | :--- | :--- | :--- | | 0 | 0000 | 0 | | 1 | 0001 | 1 | | ... | ... | ... | | 9 | 1001 | 9 | | 10 | 1010 | A | | 11 | 1011 | B | | 15 | 1111 | F |
Пример перевода в десятичную:
Где — цифра старшего разряда, — вес разряда, — значение цифры F, — вес младшего разряда.
Двоичная арифметика
Арифметические операции в двоичной системе выполняются по тем же правилам «столбика», что и в десятичной, но с учетом того, что переполнение разряда наступает, когда сумма достигает 2 (так как цифры 2 не существует).
Сложение
Правила сложения одноразрядных двоичных чисел: * * * * (0 пишем, 1 переносим в следующий разряд)
Пример сложения (в двоичном виде ):
Где:
Результат . Все верно.
!Визуализация переноса разрядов при двоичном сложении
Кодирование целых чисел
Если с положительными числами все просто (прямой перевод в двоичный код), то как компьютер понимает отрицательные числа? Ведь знака «минус» в памяти не существует, есть только 0 и 1.
Прямой код и знаковый разряд
Самый простой способ — выделить самый старший бит под знак. Если бит равен 0 — число положительное, если 1 — отрицательное. Например, для 8-битного числа: * *
Однако этот метод имеет два серьезных недостатка:
Дополнительный код (Two's Complement)
В современной вычислительной технике используется дополнительный код. Он позволяет выполнять вычитание через операцию сложения, что значительно упрощает конструкцию процессора.
Алгоритм получения отрицательного числа в дополнительном коде:
Формула получения дополнительного кода:
Где — число в дополнительном коде, — побитовая инверсия числа , — арифметическое добавление единицы.
Пример: получим число -5.
0000 01011111 10101111 1011Теперь, если мы сложим и (как обычные двоичные числа), мы должны получить 0:
Единица в 9-м разряде выходит за пределы 8 бит и отбрасывается. В итоге в байте остается 0000 0000. Магия работает!
Кодирование текстовой информации
Компьютер не понимает букв, он понимает только числа. Чтобы отобразить текст, каждому символу присваивается уникальный числовой код. Эта таблица соответствий называется кодировкой.
ASCII
Исторически первой массовой кодировкой стала ASCII (American Standard Code for Information Interchange). Она использует 7 бит для кодирования 128 символов: латинский алфавит, цифры и управляющие символы.
Например: * Символ 'A' имеет код (). * Символ 'a' имеет код ().
Unicode
ASCII не могла вместить кириллицу, иероглифы и эмодзи. Поэтому появился стандарт Unicode (например, в реализации UTF-8). Он использует переменную длину кода (от 1 до 4 байт) для одного символа, что позволяет закодировать более миллиона различных знаков.
Заключение
Мы разобрали фундамент цифровой техники: системы счисления и базовую арифметику. Понимание того, как числа представляются в битах и как работает дополнительный код, критически важно для дальнейшего изучения логических вентилей и архитектуры процессора.
В следующей статье мы перейдем от арифметики к логике и изучим Булеву алгебру — математический аппарат, описывающий законы мышления цифровых схем.