Кажется, что за столь непонятным устройством лежит что-то крайне сложное, недоступное для обычного человека... Но что если я скажу, что за всеми сложными вычислительными процессами стоит всего один простой принцип? Это сложение.
Да! Всё, что умеет компьютер, это складывать числа. А уже с помощью различных логических комбинаций сложения чисел, можно получить все остальные действия, на которые сегодня способен компьютер, начиная от банального умножения и заканчивая обучением искусственного интеллекта.
Но если люди выполняют сложение в системе счисления, называемой десятичной, то в компьютере это происходит в двоичной или бинарной СС. Вы, наверное, сейчас представите эти страшные матрицы нулей и единиц, подумаете как же это всё сложно, но поверьте... двоичная система во много раз проще привычной нам десятичной, как в плане самих операций, так и в плане реализации.
Как работает десятичная система?
В привычной нам десятичной системе существует 10 символов, с помощью которых мы можем записать любое десятичное число: 0,1,2,3,4,5,6,7,8,9. Каждое число состоит из разрядов. Представьте себе вот такой большой бесконечный ряд нулей :
.....00000000000000000000000
Это ряд доступных для нашего воображения разрядов. Самый правый нолик в десятичной СС отвечает за разряд единиц, нолик перед ним - за разряд десятков, третий справа - за сотни, далее тысячи и так далее, до бесконечности. От того сколько разрядов задействовано, число называется двузначны, пятизначным, шестизначным и так далее. Начнём записывать однозначные числа. Для этого нужно увеличивать самый правый нолик до тех пор, пока это возможно:
- ...000000001
- ...000000002
......
- ...000000009
Обратите внимание, что незаполненные (нулевые) разряды слева от первого заполненного называются незначащими, поэтому их можно не записывать, но мысленно они там есть.
И вот мы дошли до числа 9, что же дальше? Разряд единиц переполнен, и мы должны текущий и предыдущие разряды обнулить, а следующий (разряд десятков) увеличить. Так как там сейчас 0, то он станет 1. В итоге мы получим уже двузначно число (в нем задействованы два разряда), которое мы называем десять:
- ...000000010
Далее будем опять же увеличивать самый правый разряд, пока не дойдём до 19, после чего мы текущий и предыдущие разряды должны обнулить, а следующий увеличить. Так как там сейчас 1, то он станет 2. В итоге мы получим число, которое мы называем: двадцать
- ...000000019
- ...000000020
Но что же там с двоичной системой?
И тут всё гораздо проще. В двоичной СС уже не десять, а всего лишь два символа: 0 и 1. Опять же помним про бесконечный разрядный ряд нулей:
.....000000000000000
В двоичной системе однозначных чисел всего два:
- ...000000000
- ...000000001
Далее по аналогии с десятичной системой, если происходит переполнение разрядов, мы увеличиваем следующий разряд, а предыдущие обнуляем:
- ...000000010
- ...000000011
- ...000000100
- ...000000101
- ...000000110
- ...000000111 и т.д.
В компьютере легко представить число цифру 0, как отсутствие чего-либо, а 1 - как присутствие чего-либо. Ка правило, этим чем-либо является напряжение. Таким образом, мы можем представить наш разрядный ряд нулей в виде ряда негорящих лампочек, вкрученных в патроны.
Поскольку в компьютере такой разрядный ряд не может быть бесконечным, то, как правило, он переставляет из себя ряд из 32 и 64 разрядов (отсюда появились 32-ух и 64-ех разрядные системы). В данном случаем мы взяли 8 лампочек, поэтому максимальное число, которое мы можем записать будет 8-рязрядным.
Подадим напряжение на самую правую лампу, она загорится, и мы получим число 00000001 или просто 1. Таким образом, мы получили элемент, обладающий памятью и способный хранить какие-либо данные.