Доброго всем времени суток! Перед тем как начинать статью про принципы работы и построения процессоров, хотелось бы рассказать о бинарном счислении, которое, собственно, используется в компьютерной логике.
Чем бинарное отличается от привычного нам десятичного?
Давайте вспомним какие цифры мы используем при записи чисел. Цифр всего десять, начинаются с нуля и кончаются девяткой (десять это уже составное число). Такая, привычная нам, запись цифр и чисел называется десятичной (по количеству цифр). Что мы делаем когда в привычной нам системе кончаются цифры для записи — правильно, пишем 1(количество десяткой) и возле неё 0(количество цифр после десятка), так получается составное число 10.
А теперь давайте посмотрим на цифры которые знает логический блок процессора — это 0 и 1, всё остальное он записывает с помощью их комбинаций. Да — именно так, в двоичной системе нет символа уже для двойки, а значит при записи используются комбинации существующих, но с немного другим принципом. Бинарные числа строятся по похожей с десятичными схеме, но здесь играют роль разряды — как только разряд достигает своего максимума (единицы) появляется новый разряд (слева), а старый обнуляется.
0 = 0
1 = 1
10 = 2
11 = 3
100 = 4
101 = 5
110 = 6
111 = 7
1000 = 8
1001 = 9
Для справки: символы двоичной системы в логических схемах могут обозначать не только как 0 и 1, а как «истина» и «ложь», или «вкл» и «выкл» .
Перевод из бинарной в десятичную и обратно.
Для получения числа в бинарной системе необходимо воспользоваться делением на 2 с остатком. Приведём пример — есть число 254 в десятичной системе и его необходимо «превратить» в правильный набор ноликов и единиц. Сначала поделим всё на 2, до тех пор, пока не получим 0:
254 / 2 = 127 (остаток 0) [7]
127 / 2 = 63 (остаток 1) [6]
63 / 2 = 31 (остаток 1) [5]
31 / 2 = 15 (остаток 1) [4]
15 / 2 = 7 (остаток 1) [3]
7 / 2 = 3 (остаток 1) [2]
3 / 2 = 1 (остаток 1) [1]
1 / 2 = 0 (остаток 1) [0]
Примечание: в двоичной системе принято считать разряды с нуля, соответственно первым разрядом оказывается нулевой, вторым — первым и т.д.
А теперь собираем всё с последнего остатка — получаем число 11111110. Для наглядности в примере сверху в квадратных скобках указан порядок сборки двоичного числа.
Для справки: 1 разряд равен одному биту, число из восьми разрядов - одному байту. Максимальное число хранимое в одном байте 255 (11111111 в бинарной системе).
В двоичную систему число перевели, а как переводить обратно? Если бы деление, значит умножением. Умножать надо каждую цифру числа на двойку в степени разряда, после чего сложить все результаты умножения. Приведём пример — есть число 11010101 и его надо из бинарной системы перевести в привычную нам десятичную:
Разложим число на разряды (для удобства подпишем номер разряда в квадратных скобках) 1[7] 1[6] 0[5] 1[4] 0[3] 1[2] 0[1] 1[0] . Теперь произведём умножение и сложим результаты:
1*(2^7)+1*(2^6)+0*(2^5)+1*(2^4)+0*(2^3)+1*(2^2)0*(2^1)+1*(2^0) =
= 128 + 64 + 0 + 16 + 0 + 4 + 0 +1 = 213
Примечание: возведение в степень в данной статье обозначено символом ^ . Пример: (2^2) — это два во второй степени, (5^4) — пять в четвёртой степени.
Мы получили десятичное число 213 — именно оно равно двоичному 11010101, можно провести обратный перевод, для проверки и закрепления знаний:
213 / 2 = 106 (остаток 1) [7]
106 / 2 = 53 (остаток 0) [6]
53 / 2 = 26 (остаток 1) [5]
26 / 2 = 13 (остаток 0) [4]
13 / 2 = 6 (остаток 1) [3]
6 / 2 = 3 (остаток 0) [2]
3 / 2 = 1 (остаток 1) [1]
1 / 2 = 0 (остаток 1) [0]
Отмечаем номера разрядов (напоминаем, они начинаются с нуля) и собираем число 11010101 — всё выполнено верно, это число мы и переводили в десятичную систему.
Простейшие элементы компьютерной логики.
Что такое двоичная система и как переводить в неё привычные нам числа мы узнали, теперь поговорим о простейших логических конструкциях с которыми работает процессор.
Для справки: в процессорах используется именно двоичная логика из-за принципа их работы. 1 — означает наличие напряжения (тока) на определённом элементе (о которых мы поговорим, когда будем разбирать АЛУ и регистры процессора), 0 — означает, что напряжения на элементе нет. Подробнее об этом будет рассказано в статьях про логические конструкции и работу процессора.
Простейших логических конструкций всего три: «И» «ИЛИ» «НЕ», мы будем обозначать их английскими буквами, для большего удобства и дальнешего понимания работы сложных логических элементов: «AND» «OR» «NOT».
Поговорим о каждой из этих конструкций:
Примечание: цифры 1 и 0 в логических конструкциях стоящих до знака равенства называются операндами.
Конструкция AND возвращает 1 (истина) когда оба входных операнда равны 1, во всех остальных случаях возвращается 0 (ложь).
Примеры:
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
Конструкция OR возвращает 1 (истина) когда один из входных операндов равен 1, в случае когда оба операнда равны нулю, возвращается 0 (ложь).
Примеры:
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0
Конструкция NOT возвращает обратное значение операнда.
Примеры:
NOT 1 = 0
NOT 0 = 1
Для упрощения вычислений сложных составных логических конструкций используются таблицы истинности. Приведём пример составления таблицы для конструкции (NOT A) OR (NOT B) AND (A OR B)
Первым делом надо понять в какой последовательности выполняются логические вычисления:
1. Действия в скобках
2. Отрицание (NOT)
3. Конъюнкция (AND)
4. Дизъюнкция (OR)
Приступим к созданию таблицы — первые два (в данном случае) столбца будут отданы переменным (A и B). Следующие столбы строятся по порядку действий в конструкции.
Из этой таблицы мы получаем, что выражение истинно при операндах:
A = 1 B = 0
A = 0 B = 1
A =0 B = 0
На сегодня эта вся информация о бинарной логике, больше и подробнее мы затронем её при полном разборе работы процессора и логических устройств.
Огромное спасибо за прочтение данной статьи, надеюсь она была полезна для вас. Буду безмерно рад и благодарен за лайк, подписку и конструктивную критику в комментариях!