Как компьютеры добавляют - логический подход

Опубликовано 15, 3, 2020
Поделиться этим постом:

Как компьютеры добавляют - логический подход

В прошлый раз мы смотрели на системы счисления и подсчета (см. Это двоичный мир - как считают компьютеры). Для быстрого освежения мы увидели, что компьютеры состоят из множества единиц 0 и 1, двоичной системы. 1 - максимально возможная цифра, поэтому числа в компьютере сохраняются, например, в 1010 или 10 в десятичном виде. Мы также видели, что эти двоичные числа можно рассматривать как восьмеричные (8) или шестнадцатеричные (16) числа - в этом случае 1010 становится 15 восьмеричным, или A hex.

Вы, вероятно, понимаете, что «стандартный» код ПК состоит из 8-битных байтов, продвигая шестнадцатеричную систему на новый уровень. Вы также можете знать, что процессоры и работающее на них программное обеспечение Windows прогрессировали с 8 бит до 16 бит с 32 бит до 64 бит. В основном это означает, что компьютер может работать с 1,2, 4 или 8 байтами одновременно. Не волнуйтесь, если это все Gobbledegook, вам не нужно, чтобы понять, как компьютеры добавляют!

Хорошо, теперь к математике - съежимся! Это немного сложнее, чем в прошлый раз, но если вы мыслите логически, как компьютер, понимая, что они действительно глупы, вы пройдете через это!

Мы сделаем здесь перерыв, чтобы взглянуть на математику, о которой вы, возможно, не слышали - булеву алгебру. Еще раз, это действительно просто, но показывает, как работает компьютер и почему он так педантичен!

Булева алгебра названа в честь Джорджа Буля, английского математика в 19 веке. Он разработал логическую систему, которая использовалась в цифровых компьютерах более чем за столетие до того, как появился компьютер для его использования!

В булевой алгебре вместо + и - и т. Д. Мы используем AND и OR для формирования наших логических шагов.
Например: -

x OR y = z означает, что если x или y присутствует, мы получаем z.
Однако
x AND y = z означает, что x и y должны присутствовать, чтобы получить z.
Мы также можем рассмотреть XOR (исключающее ИЛИ).
x XOR y = z означает, что x или y, НО НЕ ОБА должны присутствовать, чтобы получить z.

Это оно! Это все, что вам нужно, чтобы понять, как важен компьютер. Сказал тебе это было просто!

Как мы используем эту логику в компьютере? Мы создаем небольшую электронную схему, называемую Gate, с транзисторами и другими вещами, чтобы мы могли работать с нашими двоичными числами, хранящимися в регистре, - только с небольшим объемом памяти. (И это последняя электроника, о которой вы услышите!). Мы создаем вентиль AND, вентиль OR и вентиль XOR.

Когда мы добавляем десятичную дробь, например, 9 + 3, мы получаем 2 «единицы» и переносим единицу в 10 с, давая 10 + 2 = 12.

Помните двоичные значения битов в Десятичный 1,2,4,8 и т. Д.? Мы начинаем с 0, затем с 1 в первой битовой позиции, 1 бит. Если мы добавим двоичный файл 1 + 1, мы должны получить 10, которое имеет 1 бит во второй битовой позиции и 0 в первой, что дает десятичную 2 + 0 = 2. Эта вторая позиция бита формируется несущей из первого бита.

Чтобы сделать сумматор, мы должны продублировать с помощью логической схемы, как мы добавляем в двоичном виде. Чтобы добавить 1 + 1, нам нужно 3 входа, по одному для каждого бита и перенос, и 2 выхода, один для результата (1 или 0) и вынос (1 или 0). В этом случае вход для переноса не используется. Мы используем 2 вентиля XOR, 2 вентиля AND и вентиль OR, чтобы составить сумматор на 1 бит.

Теперь мы делаем еще один шаг и забываем о воротах, потому что теперь у нас есть логический блок, ДОБАВКА. Наш компьютер разработан с использованием различных комбинаций логических блоков. Помимо сумматора у нас может быть множитель (серия сумматоров) и другие компоненты.

Наш блок ADDER берет один бит (0 или 1) от каждого добавляемого числа, плюс бит переноса (0 или 1) и производит вывод 0 или 1 и перенос 0 или 1. Таблица ввода A , B и Carry, и вывод O и Carry, выглядит следующим образом: -

Без Carry in:

AB c OC
0 0 0 0 0
1 0 0 1 0
0 1 0 1 0
1 1 0 0 1

С Carry in:

AB c OC
0 0 1 1 0
1 0 1 0 1
0 1 1 0 1
1 1 1 1 1

Это называется таблицей истинности, она показывает состояние выхода для любого заданного состояния входа.

Давайте добавим 2 + 3 десятичных. Это 010 плюс 011 двоичный. Нам понадобятся 3 блока ADDER для десятичных битовых значений 1, 2 и 4)

Первый ADDER получает наименьший значащий бит (значение десятичного бита 1) от каждого числа. Вход A будет 0, вход B будет 1 без переноса - 0.

Из таблицы истинности это дает выход 1 и перенос 0 (3-я строка). BIT 1 RESULT = 1

В то же время следующий ADDER (десятичное значение бита 2) имеет входы 1, 1 и перенос 0, что дает выход 0 с битом переноса 1 (4-я строка). BIT 2 RESULT = 0

Следующий ADDER (десятичное битовое значение 4) имеет входы 0, 0 и перенос 1, что дает выход 1 без переноса - 0 (5-я строка). БИТ 4 РЕЗУЛЬТАТ = 1.

Таким образом, мы имеем биты 4,2,1 как 101 или 4 + 1 = 5.

Это кажется трудоемким способом сделать это, но наш компьютер может иметь 64 или более сумматоров, добавляя одновременно два больших числа миллиардов раз в секунду.

В следующий раз мы узнаем, как компьютер выполняет более сложные операции, и это просто!

Категория:
Программирование

Опубликовано:
15, 3, 2020