Найти в Дзене
BaseIT

Двоичный код. Что это, и как на нем работают все компьютеры?

Сегодня предлагаю разобраться с двоичной системой счисления. Вы наверняка что-то про это слышали, и наверное даже знаете, что все современные цифровые устройства работают именно в двоичном коде. Начнем мы с понятия "система счисления". Что это ? Это то, как мы договорились записывать числа. А именно сколько у нас есть цифр/знаков/символов, чтобы описать все существующие числа. Или другими словами сколько цифр в нашем Алфавите. В современном мире, мы практически везде используем десятичную систему. Десятичной она называется, потому что у нас есть всего лишь 10 цифр, которыми мы обозначаем все существующие числа. Приведу пример, давайте вместе досчитаем от 0 до 10: 0 1 2 3 4 5 6 7 8 9 10 Кажется немного странным, что пока мы шли от нуля до девятки, нам было достаточно одного символа, но дойдя до 10, одного символа стало не хватать. Все дело в том, что цифры закончились, и далее, нам пришлось использовать уже 2 знака, чтобы обозначить двузначное число. Как только знаков для обозначени

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

Начнем мы с понятия "система счисления". Что это ?

Это то, как мы договорились записывать числа. А именно сколько у нас есть цифр/знаков/символов, чтобы описать все существующие числа. Или другими словами сколько цифр в нашем Алфавите.

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

Приведу пример, давайте вместе досчитаем от 0 до 10:

0 1 2 3 4 5 6 7 8 9 10

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

97 98 99 100 101 102

и так далее.

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

С десятичной системой счисления мы разобрались, однако ей все не ограничивается. Если вы когда-нибудь рисовали в специализированных программах или производили любые другие действия, которые требовали выбора цветовой палитры, вы могли сталкиваться вот с такими обозначениями цветов:

Примеры обозначения цветов в шестнадцатиричной системе
Примеры обозначения цветов в шестнадцатиричной системе

Эти наборы букв и цифр, на самом деле привычные нам числа, просто не в десятичной системе счисления, а в шестнадцатиричной. Если бы с вами захотели досчитать от 0 до 16 в шестнадцатиричной системе, мы бы считали вот так:

Десятичная система:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Шестнадцатиричная система:

0 1 2 3 4 5 6 7 8 9 A B C D E F 10

Как вы видите, в шестнадцатиричной системе счисления, у нас уже не десять уникальных цифр, а шестнадцать.

Поэтому и первым двузначным числом оказывается не 10, а 16.

Почему же мы решили, что для подбора цветов нам недостаточно будет десятичной системы счисления?

Простой ответ, потому что оттенков цветов слишком много. Если бы мы продолжали использовать десятичную систему, то вместо 6 символов, нам бы пришлось использовать 8:

Примеры обозначения цветов в десятичной системе
Примеры обозначения цветов в десятичной системе

Это не единственный пример, когда мы используем системы счисления отличные от 10-чной:

  • Римские цифры (I, II, III, IV, V...)
  • Измерения времени - секунд 60, минут 60, часов 24, дней 365.
  • Двоичные - во всех цифровых девайсах

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

Посчитаем от нуля до пяти в двоичной системе.

Десятичная система:

0 1 2 3 4 5

Двоичная система:

0 1 10 11 100 101

Когда мы считаем в двоичной системе, мы должны считать так: ноль, один, один-ноль (2 в десятичной), один-один (3 в десятичной), один ноль ноль(4 в десятичной), один ноль один (5 в десятичной).

Как видите, в двоичной системе счисления, где у нас всего два символа, число два уже становится двузначным. Мы можем продолжать считать и дальше, количество символов будет быстро увеличиваться, однако, мы сможем записать любое число, которое захотим используя только 0 и 1.

В компьютерах зачастую размер чисел, а именно количество знаков, предопределено заранее. Например каждое число, должно иметь длину в 4 знака. В таком случае, перед значением числа добавляются нули.

Разная запись одних и тех же чисел.
0000 0001 0010
0 1 10

Подведем краткий итог:

  • Система счисления это способ записи чисел
  • Её размер (двоичная, десятичная) - это кол-во символов, которые мы используем для записи чисел, размер алфавита
  • Мы можем выбирать любую удобную нам систему счисления, она позволит нам записать любое число

Вернемся к нашим компьютерам. Почему же при их создании в основу легла именно двоичная система?

Причиной тому несколько вещей.

#1 Двоичная логика является наиболее простой, с точки зрения формирования алгоритмов действий. Перед вам всегда стоит выбор всего лишь из двух вариантов: 0 или 1; Нет или Да.

Программировать такие устройства довольно просто, алгоритмы действий состоят из простых развилок.

Пример простого алгоритма
Пример простого алгоритма

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

  • ВЫКЛ - Нет - 0 - электрического тока нет
  • ВКЛ - Да - 1 - электрический ток есть

Это позволяет сильно упростить электросхемы, которые, по сути, выглядят схоже с алгоритмом на картинке выше. Ток либо проходит по определенному пути - Да, либо не проходит - Нет. Управляя переключателями на электросхеме, мы управляем алгоритмом.

Чем проще электросхема, тем легче и дешевле её можно произвести.

#3 У компьютеров собранных на переключателях вкл/выкл мало точек отказа. Схемы на которых их строят, благодаря свой простоте оказываются не только дешевыми, но и надежными.

Итого, компьютеры работают в бинарной системе, потому что это надежно, легко в производстве и подчиняется понятной простой логике. При это двоичная система, как и любая другая позволяет описать все возможные числа, а следовательно, не накладывает никаких ограничений.

Посмотрим, как это выглядит на практике. У нас есть электрическая схема. В ней находится источник тока, ключ и лампочка.

Если Ключ находится в положении 0, ток не течет и лампа не горит.

Если ключ в положении 1, ток течет и лампа горит.

Простая электросхема с лампочкой
Простая электросхема с лампочкой

Теперь давайте немного усложним эту схему и добавим ещё один ключ и одну лампочку.

Электросхема с двумя кнопками и тремя лампами
Электросхема с двумя кнопками и тремя лампами

Итак у нас есть две кнопки и три лампочки. Они подключены параллельно.

На первой картинке обе кнопки не нажаты, лампы не горят.

На второй картинке у нас нажата кнопка 1 и горит 1 лампа.

На третьей картинке у нас нажата кнопка 2 и горит 2 лампы.

На четвертой картинке обе кнопки нажаты и горят 3 лампы.

Давайте вспомним как мы в двоичной системе считали до пяти.

Десятичная система:

0 1 2 3 4 5

Двоичная система:

0 1 10 11 100 101

А теперь посмотрим на нашу схему ещё раз.

Положение 00 соответствует 0

Положение 01 соответствует 1

Положение 10 соответствует 2

Положение 11 соответствует 3

Когда мы нажимаем одновременно кнопку 1 и кнопку 2 мы складываем их результаты.

01+10=11

Поскольку мы работаем в двоичной системе, ответ у нас тоже в двоичной, давай переведем это в десятичную.

1+2=3

Кажется сходится.

При этом нам не важно в какой последовательности нажимать кнопки, поскольку от переменны мест слагаемых сумма не изменится.

1+2=3

2+1=3

Только что, мы с вами разработали электрическую схему, с помощью которой мы можем складывать числа. Наша схема довольно простая, поэтому складывать мы пока умеем всего лишь числа 1 и 2. Добавив рядом кнопку, которая будет включать три лампы, мы сможем складывать числа 1, 2 и 3 в разных их комбинациях. Наращивая нашу схему, мы сможем работать все с большими и большими числами.

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

Уже в 1950-х годах были придуманы полупроводники, которые позволили уменьшить в размере громоздкие электросхемы, но сохранили общие принципы, ток течет 1, не течет 0, а любая операция это комбинация задействованных полупроводников.

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