Почему 0 и 1 в компьютере
Привет!
Можете мне объяснить или лучше скинуть ссылку где можно почитать о том как компьютер понимает 0010101. Дело не в двоичной системе, а в том как вообще электросхема понимает символы(цифры) и преобразует их в буквы. Как электричество может вычислять, и каким образом людям удалось загнать в компьютер двоичную систему.
Есть очень простое объяснение, с которого хорошо начинать.
0 и 1 - это "выкл"/""вкл", "тока нет" / "ток есть".
Все логические схемы основаны на этом принципе. Включено/выключено, открыто/закрыто, высокий/низкий, истина/ложь, да/нет, больше/меньше.
Отсюда и бинарная логика, см. алгебра Буля.
А технически это реализуется логическими схемами.
Ну типа жил был транзистор значит. И он был такой весь из себя крайне радикальный - не было у него по жизни других настроений, кроме двух - либо он говорил всем "да" и пропускал через себя всё, что в одно ухо (левая дырка) влетело, то из другого (правая дырка) сразу вылетало. Либо же настроение его могло поменяться, тогда он становился крайне негативным и переставал пропускать себя любую информацию - замыкался в себе, думал о главном.
А настроение его зависело от того, насколько хорошо он питался. Суёшь ты ему в рот (третья дырка) нормальное питание - он добрый, на всё согласен, информацию через себя пропускает. Чуть только начинаешь его кормить меньше, чем он хочет (есть у него определённый уровен неообходимого питания) - он тут же отключался от мира и ни на что не реагировал, пока снова не пихнёшь ему в рот достаточноого питания. Так и получилось, что аналоговый уровень питания, то есть количество еды, которое ты ему кладёшь в рот, в итоге превращается в бинарное значение - 0 или 1 на правом ухе.
И вот если найти нашему транзистору таких же друзей и объединить их - то можно получить цифровую схему. В которой в зависимости от поданного питания на разные рты и левые ухи мы будем получать разные комбинации питания на правых ухах. Чаще всего транзисторы соединяют довольно странным образом - правое ухо одного ко рту другого, чтобы первый контроллировал настроение второго. И т.д. Чем больше транзисторов - тем сложнее можно придумать алгоритм, который эта схема будет реализовывать.
И вот в современных процессорах миллионы этих транзисторов (если быть точнее, то на текущий момент около 1,400,000,000) спаяны вместе. чтобы распознавать входные команды и выдавать результат по заданной схеме.
Ты спросишь, мой маленький друг, как же розетка соединяется с процессором? Как эти 220В превращаются в 0 и 1 на моём мониторе?. А всё дело в том, что блок питания преобразует переменный ток в постоянный, который потом подаётся на процессор. Блок питания совсем не мудрёный - пара диодов и трансформатор, можешь даже собрать его сам дома из говна и палок. А интересное дальше.
Но если подать ток на схему из транзисторов - то они застынут в одном положении, заданном схемой, и ничего происходить не будет? Да, ты прав, чтобы компьютер считал, необходимо менять ток на его входных ножках, тем самым отдавая ему разные команды. Но тут возникает проблема синхронизации - поменять напряжение одномоментно невозможно (физика, типа, химия там, электроны бегают, заряд меняется, дырки должны образоваться успеть) - нужно определённое время. Поэтому придумали "частоту". Рядом с транзисторами сидит важный кристалик, который генерирует ток по синусоиде с равномерной частотой. Эта синусоида немного рихтуется, превращаясь в бесконечный поток "есть питание" и "нет питания" меняющийся с одинаковой частотой. На графике это выглядит как пила, примерно. И вот все договорились, что будут засекать момент, в котором "всё готово", все транзисторы заняли своё положение и всё устаканилось и наконец можно считать выходной результат, например, на верхушке зубчика пилы, то есть когда генератор частоты дал 1. И вот совремменные процессоры делают это с частотой 2 гигагерца, то есть 2 миллиарда раз в секунду все транзисторы в процессоре меняют своё состояние.
P.S. Я сделал небольшое допущение. На самом деле в правом ухе не 1 и 0, а точно такое же напряжение, которое ты подал на левое ухо, если транзистор включён, либо никакого, если выключен. Но чаще всего это потсоянный небольшой ток. Благодаря уровню необходимого питания на ртах у транзисторов, этот небольшой ток может быть либо меньше необходимого (0), либо больше, при котором транзистор включается(1). Это всё зависит от того, из чего сделан транзистор. Это уже химия, дружок. Сплавы всякие, металлов. Они ещё полупроводники называются, потому что до конца не определились, готовы они всегда пропускать ток, или никогда. Этим тохитрые людишки и воспользовались, заставляя полупроводники менять своё настроение и позволять тебе играть в майнкрафт.
Так сложилось, что человечество считает десятками - десятичный код (возможно потому, что пальцев на руках столько, а возможно и нет). Всего у нас 10 цифр. И если назвать этот ряд численным алфавитом, то числа это слова, а цифры это буквы. Хотя предлагаю сразу к делу: любое слово состоит из нескольких букв, также и число состоит из нескольких цифр, а правильнее сказать разрядов.
одноразрядные числа - 0,1,2,3,4,5,6,7,8,9
двухразрядные числа - 10,11. 55,56. 98,99
восьмиразрядные числа - 00000001,00000002. 00000099. 00125245,001252246. 99999999
Как видно из примеров, простым добавлением нолей мы можем одно-разрядные числа переводить в много-разрядные, это важно помнить при операциях с двоичными числами.
Особенность двоичных чисел состоит в том, что в "алфавите" всего две "буквы" и это - 0 и 1
Если использовать один разряд, то вариантов всего два 0 и1. Как всё логично.
Используем два разряда: 00,01,10,11, как видим вариантов уже 4.
Переходим на три разряда и получаем 000,001,010,011,100,101,110,111
Обратите внимание, что количество вариантов расширяется по простому алгоритму, при добавлении одного разряда, количество вариантов удваивается. Так для 4-х разрядных чисел мы сперва приписываем 0 и перебираем все трех-разрядные числа, затем ставим 1 (именно слева на место старшего разряда) и снова перебираем трех-разрядные. В итоге 8+8=16. как ни странно, для пяти-разрядных чисел в двоичном коде будет 32 варианта
31 - 11 111 - 3 7 - 1 F я не случайно разделил пробелами
235 - 11 101 011 353 это для восьмеричного кода , а для шестнадцатиричного 1110 1011 смотрим по табличке 1110- это Е, а число 1011 - В, Получим число ЕВ.
Но мы пока про двоичную систему. Итак число 15 = 1*10+5*1
Итак мы рассмотрели двоичные числа, научились переходить от двоичных чисел к десятичным, восьмеричным и шестнадцатиричным. Если есть сложности с пониманием заметки, то просто запомните таблицу и перечитайте еще пару раз статью.
Перевод из 10-го в 2-ый можно сделать по таблице, а можно простым делением, пример:
75 переводимв 2 ый код. Делим 75 с остатком 75/2 =37 остаток 1
37/2=18 остаток 1
18/2 =9 остаток 0
9/2 = 4 остаток 1
4/2 = 2 остаток 0
Теперь просто переписываем число составленное из полученных остатков, где старший разряд последний остаток 1001011 по таблице можете перевести в восьмеричный и шестнадцатиричный код. Рекомендую прочитать статью несколько раз.
Конечно же каждый из нас знаком с десятичной системой счисления. Это цифры от 0 до 9, которыми мы ежедневно пользуемся. Но как она могла бы выглядеть для компьютера. По каким параметрам процессорный блок может классифицировать информацию?
Итог
Как мы выяснили, двоичная система применяется при обмене информацией между цифровыми устройствами, так проще всего. Однако, чтобы описать процессы, которые протекают внутри таких устройств двоичной системой, понадобятся слишком длинные и трудные для понимания записи. Поэтому были придуманы восьмеричная и шестнадцатеричная системы счисления.
Как известно, информация в компьютерах передается в виде байтов, которые обычно содержат 8 бит – это основание для восьмеричной системы. А единица данных – машинное слово – включает в себя 2 байта, то есть 16 бит. Таким образом, с помощью шестнадцати разных символов можно описать ту информацию, которая является мельчайшей частицей при обмене.
Напоминаем вам о нашем проекте SFERA, который уже близится к стадии завершения. Скоро выйдет бета-версия мессенджера ASAP, после, в августе, будут представлены сразу несколько подприложений в первом блоке, в дальнейшем и второй блок подприложений включая и Work & Business, который на данный момент готов на 60%.
Компьютеры не понимают слов и цифр так, как это делают люди. Современное программное обеспечение позволяет конечному пользователю игнорировать это, но на самых низких уровнях ваш компьютер оперирует двоичным электрическим сигналом, который имеет только два состояния: есть ток или нет тока. Чтобы «понять» сложные данные, ваш компьютер должен закодировать их в двоичном формате.
Двоичная система основывается на двух цифрах – 1 и 0, соответствующим состояниям включения и выключения, которые ваш компьютер может понять. Вероятно, вы знакомы с десятичной системой. Она использует десять цифр – от 0 до 9, а затем переходит к следующему порядку, чтобы сформировать двузначные числа, причем цифра из каждого следующего порядка в десять раз больше, чем предыдущая. Двоичная система аналогична, причем каждая цифра в два раза больше, чем предыдущая.
Другие системы счисления
Как уже было сказано в начале, как минимум одну систему счисления знает каждый ещё со школьной скамьи. Но есть и другие, например двоичная о которой уже шла речь выше. Чтобы, к примеру перевести число 13 в двоичную систему счисления, необходимо сделать следующее:
Если число большое, есть более удобный метод:
Почему только двоичная система
Поэтому вы можете подумать: «Почему только 0 и 1? Почему бы не добавить ещё одну цифру?». Хотя отчасти это связано с традициями создания компьютеров, вместе с тем, добавление ещё одной цифры означало бы необходимость выделять ещё одно состояние тока, а не только «выключен» или «включен».
Проблема здесь в том, что если вы хотите использовать несколько уровней напряжения, вам нужен способ легко выполнять вычисления с ними, а современное аппаратное обеспечение, способное на это, не жизнеспособно как замена двоичных вычислений. Например, существует, так называемый, тройной компьютер, разработанный в 1950-х годах, но разработка на том и прекратилась. Тернарная логика более эффективна, чем двоичная, но пока ещё нет эффективной замены бинарного транзистора или, по крайней мере, нет транзистора столь же крошечных масштабов, что и двоичные.
Причина, по которой мы не можем использовать тройную логику, сводится к тому, как транзисторы соединяются в компьютере и как они используются для математических вычислений. Транзистор получает информацию на два входа, выполняет операцию и возвращает результат на один выход.
Таким образом, бинарная математика проще для компьютера, чем что-либо ещё. Двоичная логика легко преобразуется в двоичные системы, причем True и False соответствуют состояниям Вкл и Выкл .
Бинарная таблица истинности, работающая на двоичной логике, будет иметь четыре возможных выхода для каждой фундаментальной операции. Но, поскольку тройные ворота используют три входа, тройная таблица истинности имела бы 9 или более. В то время как бинарная система имеет 16 возможных операторов (2^2^2), троичная система имела бы 19683 (3^3^3). Масштабирование становится проблемой, поскольку, хотя троичность более эффективна, она также экспоненциально более сложна.
Кто знает? В будущем мы вполне возможно увидим тройничные компьютеры, поскольку бинарная логика столкнулась с проблемами миниатюризации. Пока же мир будет продолжать работать в двоичном режиме.
Давным давно, еще в классе 10-ом (лет 8 назад) я случайно обнаружил довольно нехитрое объяснение того, почему факториал нуля равен единице.
Я рассказывал про это многим учителям, но никого не торкнуло. Поэтому я просто выложу это знание здесь, а то вдруг кому-то пригодится или наведет на определенные мысли. Сразу скажу я не математик, наткнулся на это случайно, когда игрался с числами. Я тогда даже не знал что такое факториал :)
Для начала вспомним общую теорию:
Факториа́л числа n — произведение всех натуральных чисел до n включительно:
По определению полагают 0! = 1. Факториал определён только для целых неотрицательных чисел.
На самом же деле факториал нуля вполне вычислим!
Для этого нам нужно проделать простую последовательность обычных математических операций.
Попробуем в действии на примере факториала n = 4 (4! = 1 * 2 * 3 * 4 = 24)
-
Сначала берем последовательность из n + (1 или больше) чисел, где каждое последующее число больше предыдущего на 1.
На выходе получаем ряд чисел количество которых меньше на 1:
50 110 194
(110 — 50) (194 — 110)
60 84
(84 — 60)
Попробуем вычислить этим способом факториал 3 (3! = 1 * 2 * 3 = 6)
Берем четыре числа в степени 3 и вычисляем «пирамидальную разность» (сам придумал)
1 3 2 3 3 3 4 3
1 8 27 64
(8 — 1) (27 — 8) (64 — 27)
7 19 37
(19 — 7) (37 — 19)
12 18
(18 — 12)
Ну и для 1 попробуем (1! = 1)
Вы уже догадались? :)
Все очень просто и для нуля:
Берем n + 1 чисел в степени 0, тоесть достаточно и одного
Вуaля! Любое число в степени 0 равно 1. В этом, кстати, слабость моего способа, он использует определение.
Но тем не менее, я считаю, что это здорово :)
Спасибо за внимание!
P.S.:
Как многие подметили это не доказательство, а всего лишь забавная закономерность.
Восьмеричная система счисления
Для записи чисел в восьмеричной системе используются числа 0,1,2,3,4,5,6,7. Чтобы перевести 94 из десятичной системы в восьмеричную, надо выполнить действие:
Подсчет в двоичном формате
В двоичном выражении первая цифра равноценна 1 из десятичной системы. Вторая цифра равна 2, третья – 4, четвертая – 8, и так далее – удваивается каждый раз. Добавление всех этих значений даст вам число в десятичном формате.
1111 (в двоичном формате) = 8 + 4 + 2 + 1 = 15 (в десятичной системе)
Учет 0 даёт нам 16 возможных значений для четырех двоичных битов. Переместитесь на 8 бит, и вы получите 256 возможных значений. Это занимает намного больше места для представления, поскольку четыре цифры в десятичной форме дают нам 10000 возможных значений. Конечно, бинарный код занимает больше места, но компьютеры понимают двоичные файлы намного лучше, чем десятичную систему. И для некоторых вещей, таких как логическая обработка, двоичный код лучше десятичного.
Следует сказать, что существует ещё одна базовая система, которая используется в программировании: шестнадцатеричная. Хотя компьютеры не работают в шестнадцатеричном формате, программисты используют её для представления двоичных адресов в удобочитаемом формате при написании кода. Это связано с тем, что две цифры шестнадцатеричного числа могут представлять собой целый байт, то есть заменяют восемь цифр в двоичном формате. Шестнадцатеричная система использует цифры 0-9, а также буквы от A до F, чтобы получить дополнительные шесть цифр.
Понятие транзистора
Чтобы ответить на этот вопрос, для начала нужно понять, что такое транзистор, лежащий в основе любого современного процессора. Представьте для начала электрическую цепь с лампочкой и выключателем:
Данная цепь заведомо может находится в двух следующих состояниях:
Первый случай: цепь разомкнута, электрический ток по проводнику не движется, свет в лампочке не горит. Дадим этому состоянию электрической цепи обозначение «0».
Второй случай: цепь питания замкнута, электрический ток движется по проводнику, свет в лампочке горит. Дадим этому состоянию электрической цепи условное обозначение «1».
В данном случае затвор выключателя, который последовательно включает и выключает цепь и играет роль своего рода транзистора (если сильно упрощать).
За одним лишь исключением, что роль затвора в транзисторе выполняет электрическое поле.
Оказывается, что под действием электрического поля электроны могут двигаться по диэлектрику (в данном случае роль диэлектрика выполняет слой кремния) .
« Именно наличие слоя диэлектрика между двумя диодами (проводниками) позволяет управлять проводимостью полупроводникового триода (транзистора)» . – источник
Диэлектрики – это вещества, не проводящие электрический ток.
Расстояние между диодами называется эмиттерным переходом. А сами диоды – коллектором.
Почему машинный код – это нули и единицы
В примере с лампочкой мы сказали, что электрическая цепь может пребывать в двух состояниях:
Тот же принцип можно перенести и на транзистор:
- положение «0» – электрический ток на затвор не поступает – сигнал отсутствует
- положение «1» – электрический ток поступает на затвор – генерируется магнитное поле, под его действием электроны движутся по диэлектрику – появляется сигнал
Так и появляются те самые нули и единицы в машинном коде. Это называется двоичной системой счисления, в которой может передаваться информация, но она не единственная в своем роде. Коротко остановимся на других системах счисления.
Шестнадцатеричная система счисления
Для записи чисел в шестнадцатеричной системе счисления используются цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 и латинские буквы A, B, C, D, E, F. Буквы A, B, C, D, E, F имеют значения 10, 11, 12, 13, 14, 15. Переведем 158 в шестнадцатеричную систему:
Почему компьютеры используют двоичные файлы
Короткий ответ: аппаратное обеспечение и законы физики. Каждый символ в вашем компьютере является электрическим сигналом, и в первые дни вычислений измерять электрические сигналы было намного сложнее. Было более разумно различать только «включенное» состояние, представленное отрицательным зарядом, и «выключенное» состояние, представленное положительным зарядом.
Для тех, кто не знает, почему «выключено» представлено положительным зарядом, это связано с тем, что электроны имеют отрицательный заряд, а больше электронов – больше тока с отрицательным зарядом.
Таким образом, ранние компьютеры размером с комнату использовали двоичные файлы для создания своих систем, и хотя они использовали более старое, более громоздкое оборудование, они работали на тех же фундаментальных принципах. Современные компьютеры используют, так называемый, транзистор для выполнения расчетов с двоичным кодом.
Вот схема типичного транзистора:
По сути, он позволяет току течь от источника к стоку, если в воротах есть ток. Это формирует двоичный ключ. Производители могут создавать эти транзисторы невероятно малыми – вплоть до 5 нанометров или размером с две нити ДНК. Это то, как работают современные процессоры, и даже они могут страдать от проблем с различением включенного и выключенного состояния (хотя это связано с их нереальным молекулярным размером, подверженным странностям квантовой механики).
Читайте также: