Почему компьютеры используют двоичную систему счисления (0,1)?

31

Почему компьютеры используют двоичную систему счисления (0,1)? Почему они не используют троичную систему счисления (0,1,2) или любую другую систему счисления?

Рай Аммад Хан
источник
9
Это вопрос об электротехнике. Видимо бинарные вентили проще реализовать. IIRC какой-то троичный компьютер был построен в какой-то момент.
Юваль Фильмус
7
Какие исследования вы провели? Когда я ввожу название вашего вопроса в Google, я получаю результаты поиска, которые дают несколько ответов на ваш вопрос. Кроме того, статья в Википедии о двоичных числах и двоичном коде имеет краткое объяснение. Мы ожидаем, что вы проведете значительное количество исследований, прежде чем спросить здесь, и мне кажется, что вы не провели даже фундаментальных исследований, прежде чем спрашивать. Поиск в Google и Википедии - это минимум.
DW
Большие базы не оказались полезными в целом.
Рафаэль
@Raphael: Ternary сделал
Mooing Duck
2
Я собираюсь поместить это как комментарий, потому что уже есть принятый ответ. Из-за производственных допусков чрезвычайно трудно создавать электронные устройства, которые надежно различают десять значений. Относительно легко создавать электронные устройства, которые различают два значения. Итак, короткий ответ: компьютеры используют двоичное представление для надежности . Я написал более подробный ответ для тех, кому это небезразлично
Боб Браун,

Ответы:

31

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

Что мы подразумеваем под «компьютером»? Существует много определений, но в информатике как науке наиболее распространенной является машина Тьюринга.

Машина Тьюринга определяется несколькими аспектами: набор состояний, таблица переходов, набор остановок и, что важно для нашего обсуждения, алфавит. Этот алфавит относится к символам, которые машина может читать как ввод и которые она может записать на свою ленту. (Вы могли бы иметь разные алфавиты ввода и ленты, но пока не будем об этом беспокоиться.)

Таким образом, я могу создать машину Тьюринга с входным алфавитом , или , или , или . Это не важно Дело в том, что я могу использовать любой алфавит для кодирования данных.{0,1}{a,b}{0,1,2}{,}

Итак, я могу сказать, что - это 9, или я могу сказать, что равен 9. Это не имеет значения, так как они являются просто символами, которые мы можем различить.0001001↑↑↑↓↑↑↓

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

Но, оказывается, унарного тоже достаточно. Вы можете закодировать 9 как 111111111. Это не особенно эффективно, но имеет ту же вычислительную мощность.

Все становится еще безумнее, когда вы смотрите на альтернативные модели вычислений, такие как лямбда-исчисление. Здесь вы можете просматривать числа как функции. На самом деле, вы можете просматривать все как функции. Вещи кодируются не как биты, 0 и 1, а как закрытые математические функции без изменяемого состояния. Посмотрите церковные цифры, чтобы узнать, как вы можете делать цифры таким образом.

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

jmite
источник
Что насчет входного кодирования в машинах с двумя счетчиками? Кажется, имеет значение. Вы уверены, что можете отклонить столь радикальные проблемы кодирования? И я вряд ли согласился бы, что сложность не проблема; но является ли лямбда-исчисление правильным способом решения этой проблемы?
Бабу
Я признаю, что есть проблемы сложности, когда вы используете унарный. Но выбор двоичного файла против троичного или чего-то подобного несколько произвольный. Это не значит, что выбор кодировки не имеет значения, но нет какого-то закона, предписывающего, почему мы используем конкретный код. Это продиктовано в основном удобством или требованиями к оборудованию, которые находятся за пределами вычислительной науки.
Jmite
1
«Итак, я могу сделать машину Тьюринга с вводимым алфавитом». Я думаю, что вы должны написать «ленточный алфавит» здесь вместо «входной алфавит». Интересная часть - это то, что используется для вычислений, а не для ввода. Кроме того, я не согласен с унарным бытием. ТМ с одинарным ленточным алфавитом практически бесполезен, потому что лента постоянна.
Саймон С.
Что касается последнего предложения: проектирование и изучение компьютерного оборудования и архитектуры также являются частью компьютерной науки.
Каве
2
Вы можете добавить, что переход от унарного к двоичному сокращает размер ваших чисел до их логарифма, что является серьезным улучшением, в то время как дальнейшее продвижение не дает такого большого выигрыша (только линейный коэффициент).
reinierpost
23

Некоторые другие вещи для рассмотрения:

Одной из причин использования двоичной системы счисления является то, что это система счисления с самым низким базовым числом, которая может представлять числа в логарифмическом, а не линейном пространстве. Чтобы однозначно различать разных чисел в унарном, средняя длина представлений должна быть пропорциональна, по крайней мере, , поскольку существует только одна строка длиной где ; . Чтобы однозначно различать различных чисел в двоичном коде, средняя длина представлений должна быть пропорциональна, по крайней мере, , поскольку существует двоичных чисел длины ;n k k < n 1 + 1 + . , , + 1 = n n log 2 n 2 k k 1 + 2 + . , , + n + 1nnkk<n1+1+...+1=nnlog2n2kknlog10nlog1020,3nn1+2+...+n+12=n . Выбор большей базы улучшает постоянную потребность в пространстве; В base 10 вы получаете чисел со средней длиной представления , что в раза больше средней длины представления из двух оснований для всех . Разница между двоичным и одинарным гораздо больше; на самом деле, это функция от . Вы получаете много, выбирая бинарный вместо одинарного; по сравнению с этим вы получаете намного меньше, выбирая более высокую базу.nlog10nlog1020.3nn

Есть некоторая правда в том, что реализовать цифровую логику легче, если нам нужно только различать два состояния. Электрические сигналы являются аналоговыми и, как таковые, могут интерпретироваться как представляющие столько дискретных состояний, сколько вы хотите ... но вам нужно более точное (а значит, дорогое и привередливое) оборудование, чтобы надежно различать больше состояний в одном диапазоне. Это предлагает выбрать как можно более низкую базу.

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

Patrick87
источник
9

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

Обратите внимание, что в некоторых местах на компьютерах хранится или передается информация с использованием более двух состояний на элемент. В массиве флэш-памяти сотни или тысячи ячеек памяти могут обслуживаться одним набором схем измерения уровня. Использование четырех уровней на ячейку вместо двух при хранении определенного объема информации может более чем утроить размер схемы, чувствительной к уровню, но сократить вдвое количество требуемых ячеек памяти. При обмене данными через Ethernet со скоростью 100 base-T или более быстрым, стоимость схемы, необходимой для обнаружения нескольких уровней сигнала на кабеле, вероятно, будет уменьшена из-за необходимости использовать кабель с большим количеством проводов или использовать кабели, которые могут обрабатывать больше сигнальные переходы в секунду без недопустимого уровня искажений.

Supercat
источник
9

В исследовательских лабораториях существуют квантовые компьютеры, которые используют q-бит в качестве базовой единицы информации, которая может быть одновременно и 0, и 1.
http://en.wikipedia.org/wiki/Quantum_computer

Также были созданы троичные квантовые компьютеры, созданные по этой ссылке http://en.wikipedia.org/wiki/Ternary_computer

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

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

Система двоичных чисел хороша в этом смысле, мы можем кодировать все целые числа , используя радикальное представление чисел. http: // en.wikipedia.org/wiki/Radix Эти значения могут представлять код ASCII A = 0x41 = 01000001, или значение может представлять машинную инструкцию nop = 0x90 = 0x10010000. xZ

Гари Д.
источник
3
Но они все еще используют двоичную систему, в квантовых вычислениях состояние суперпозиции не является третьим возможным значением. Кроме того, выкинуть пример квантовых вычислений не полезно для задаваемого вопроса.
lPlant
Я не знал об этом ..
Ali786
«q-бит как базовая единица информации, которая может быть одновременно 0 и 1». Это нонсенс. Кубиты принципиально отличаются от обычных битов тем, что они представляют недискретное (комплексное) значение. Они несопоставимы для всех практических целей.
Дискретная ящерица
3

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

Эта схема формирует основу для логических устройств, таких как AND, NAND, OR, XOR и других функций. Функция NAND является самой основной из строительных блоков. Эти логические устройства собраны для обеспечения процессоров, которые остаются в предсказуемом состоянии, и множество транзисторов могут быть упакованы в небольшое пространство для обеспечения необходимой функциональности.

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

peeldog
источник
-3

Мы используем только двоичный код (1,0), потому что в настоящее время у нас нет технологии для создания «переключателей», которые могут надежно удерживать более двух возможных состояний. (Квантовые компьютеры не продаются в настоящий момент.) Бинарная система была выбрана только потому, что довольно легко отличить наличие электрического тока от отсутствия электрического тока, особенно при работе с триллионами таких соединений. И использование любой другой числовой базы в этой системе смешно, потому что система должна будет постоянно конвертировать между ними. Это все, что нужно сделать.

Ирфан Хан
источник
2
Это правда, но разве все это уже не включено в существующие ответы?
Дэвид Ричерби