Что такое двоичный файл и почему его используют компьютеры?
Компьютеры не понимают слова или цифры так, как люди. Современное программное обеспечение позволяет конечному пользователю игнорировать это, но на самых низких уровнях вашего компьютера все представлено двоичным электрическим сигналом, который регистрируется в одном из двух состояний: включено или выключено. Чтобы понять сложные данные, ваш компьютер должен кодировать их в двоичном виде.
Двоичный код - это система счисления с основанием 2. База 2 означает, что есть только две цифры - 1 и 0 - которые соответствуют состояниям включения и выключения, которые может понять ваш компьютер. Вы, вероятно, знакомы с основанием 10-десятичной системы. Десятичное число использует десять цифр в диапазоне от 0 до 9, а затем оборачивается, образуя двузначные числа, причем каждая цифра стоит в десять раз больше, чем последняя (1, 10, 100 и т. Д.). Двоичный код аналогичен, каждая цифра стоит в два раза больше, чем предыдущая.
Подсчет в двоичном
В двоичном формате первая цифра стоит 1 в десятичном виде. Вторая цифра стоит 2, третья - 4, четвертая - 8 и т. Д. Каждый раз удваивается. Сложив все это, вы получите число в десятичном виде. Так,
1111 (в двоичном формате) = 8 + 4 + 2 + 1 = 15 (в десятичном виде)
Учитывая 0, это дает нам 16 возможных значений для четырех двоичных битов. Переместитесь на 8 бит, и вы получите 256 возможных значений. Это занимает гораздо больше места для представления, так как четыре цифры в десятичном виде дают нам 10000 возможных значений. Может показаться, что мы преодолеваем всю эту проблему, изобретая нашу систему подсчета, просто чтобы сделать ее более неудобной, но компьютеры понимают двоичный код гораздо лучше, чем десятичный. Конечно, двоичный файл занимает больше места, но аппаратные средства нас сдерживают. А для некоторых вещей, таких как логическая обработка, двоичный код лучше десятичного.
Есть еще одна базовая система, которая также используется в программировании: шестнадцатеричная. Хотя компьютеры не работают в шестнадцатеричном формате, программисты используют его для представления двоичных адресов в удобочитаемом формате при написании кода. Это потому, что две шестнадцатеричные цифры могут представлять целый байт, восемь цифр в двоичном виде. Шестнадцатеричное использует 0-9 как десятичное число, а также буквы от A до F, чтобы представить дополнительные шесть цифр.
Так почему компьютеры используют бинарный?
Краткий ответ: аппаратное обеспечение и законы физики. Каждое число в вашем компьютере является электрическим сигналом, и в первые дни вычислений электрические сигналы было намного сложнее измерять и контролировать очень точно. Более логично было провести различие только между состоянием «включено», представленным отрицательным зарядом, и состоянием «выключено», представленным положительным зарядом. Для тех, кто не уверен, почему «выкл» представлен положительным зарядом, это потому, что электроны имеют отрицательный заряд - больше электронов означает больше тока с отрицательным зарядом.
Итак, ранние компьютеры размером с комнату использовали двоичные файлы для построения своих систем, и хотя они использовали гораздо более старое и объемное оборудование, мы придерживались тех же фундаментальных принципов. Современные компьютеры используют так называемый транзистор для выполнения расчетов с двоичным кодом. Вот схема того, как выглядит полевой транзистор (FET):
По сути, он позволяет току течь только от источника к стоку, если в затворе есть ток. Это формирует бинарный переключатель. Производители могут создавать эти транзисторы невероятно маленькими - вплоть до 5 нанометров, или размером примерно с две нити ДНК. Именно так работают современные процессоры, и даже они могут страдать от проблем, связанных с различием между состояниями включения и выключения (хотя это в основном из-за их нереального размера молекулы, подверженного странным явлениям квантовой механики).
Но почему только база 2?
Таким образом, вы можете подумать: «Почему только 0 и 1? Не могли бы вы просто добавить еще одну цифру? ». Хотя некоторые из них сводятся к традиции создания компьютеров, добавление еще одной цифры будет означать, что нам придется различать разные уровни тока, а не просто« выключен »и« включен ». », Но также заявляет, как« немного »и« много ».
Проблема здесь в том, что если вы хотите использовать несколько уровней напряжения, вам нужен способ, позволяющий легко выполнять вычисления с ними, а аппаратное обеспечение для этого не является жизнеспособным в качестве замены для бинарных вычислений. Это действительно существует; он называется троичным компьютером и существует с 1950-х годов, но на этом его разработка практически остановилась. Тройная логика намного эффективнее, чем двоичная, но на данный момент ни у кого нет эффективной замены бинарного транзистора, или, по крайней мере, не было сделано никакой работы по их разработке в тех же крошечных масштабах, что и двоичная.
Причина, по которой мы не можем использовать троичную логику, заключается в том, что транзисторы расположены в компьютере - то, что называется «вратами».-и как они используются для выполнения математики. Ворота принимают два входа, выполняют над ними операцию и возвращают один выход.
Это приводит нас к длинному ответу: двоичная математика намного проще для компьютера, чем что-либо еще. Булева логика легко сопоставляется с бинарными системами, причем True и False представлены включением и выключением. Ворота вашего компьютера работают по булевой логике: они принимают два входа и выполняют с ними операции, такие как AND, OR, XOR и т. Д. Два входа просты в управлении. Если бы вы составили график ответов для каждого возможного ввода, вы бы получили так называемую таблицу истинности:
Бинарная таблица истинности, работающая на булевой логике, будет иметь четыре возможных выхода для каждой основной операции. Но поскольку троичные ворота принимают три входа, таблица троичных истин будет иметь 9 или более. В то время как двоичная система имеет 16 возможных операторов (2 ^ 2 ^ 2), троичная система будет иметь 19 683 (3 ^ 3 ^ 3). Масштабирование становится проблемой, потому что хотя троичный является более эффективным, он также экспоненциально сложнее.
Кто знает? В будущем мы могли бы начать видеть, как троичные компьютеры становятся чем-то единым, поскольку мы раздвигаем границы двоичного кода до молекулярного уровня. На данный момент, однако, мир будет продолжать работать на двоичном.
Изображение предоставлено: spainter_vfx / Shutterstock, Wikipedia, Wikipedia, Wikipedia, Wikipedia