Почему компьютеры используют двоичную систему счисления (0,1)? Почему они не используют троичную систему счисления (0,1,2) или любую другую систему счисления?
computer-architecture
binary-arithmetic
Рай Аммад Хан
источник
источник
Ответы:
Поскольку мы находимся в области компьютерных наук, я отвечу так: они этого не делают.
Что мы подразумеваем под «компьютером»? Существует много определений, но в информатике как науке наиболее распространенной является машина Тьюринга.
Машина Тьюринга определяется несколькими аспектами: набор состояний, таблица переходов, набор остановок и, что важно для нашего обсуждения, алфавит. Этот алфавит относится к символам, которые машина может читать как ввод и которые она может записать на свою ленту. (Вы могли бы иметь разные алфавиты ввода и ленты, но пока не будем об этом беспокоиться.)
Таким образом, я могу создать машину Тьюринга с входным алфавитом , или , или , или . Это не важно Дело в том, что я могу использовать любой алфавит для кодирования данных.{0,1} {a,b} {0,1,2} {↑,↓}
Итак, я могу сказать, что - это 9, или я могу сказать, что равен 9. Это не имеет значения, так как они являются просто символами, которые мы можем различить.↑ ↑ ↑ ↓ ↑ ↑ ↓0001001 ↑↑↑↓↑↑↓
Хитрость в том, что двоичного кода достаточно. Любая последовательность битов может быть интерпретирована как число, поэтому вы можете конвертировать из двоичной системы в любую другую систему и обратно.
Но, оказывается, унарного тоже достаточно. Вы можете закодировать 9 как 111111111. Это не особенно эффективно, но имеет ту же вычислительную мощность.
Все становится еще безумнее, когда вы смотрите на альтернативные модели вычислений, такие как лямбда-исчисление. Здесь вы можете просматривать числа как функции. На самом деле, вы можете просматривать все как функции. Вещи кодируются не как биты, 0 и 1, а как закрытые математические функции без изменяемого состояния. Посмотрите церковные цифры, чтобы узнать, как вы можете делать цифры таким образом.
Дело в том, что 0 и 1 - это полностью аппаратная проблема, и выбор произвольный. То, какую кодировку вы используете, не имеет особого отношения к информатике, за исключением нескольких подполей, таких как операционные системы или сети.
источник
Некоторые другие вещи для рассмотрения:
Одной из причин использования двоичной системы счисления является то, что это система счисления с самым низким базовым числом, которая может представлять числа в логарифмическом, а не линейном пространстве. Чтобы однозначно различать разных чисел в унарном, средняя длина представлений должна быть пропорциональна, по крайней мере, , поскольку существует только одна строка длиной где ; . Чтобы однозначно различать различных чисел в двоичном коде, средняя длина представлений должна быть пропорциональна, по крайней мере, , поскольку существует двоичных чисел длины ;n k k < n 1 + 1 + . , , + 1 = n n log 2 n 2 k k 1 + 2 + . , , + n + 1n n k k<n 1+1+...+1=n n log2n 2k k nlog10nlog102≈0,3nn1+2+...+n+12=n . Выбор большей базы улучшает постоянную потребность в пространстве; В base 10 вы получаете чисел со средней длиной представления , что в раза больше средней длины представления из двух оснований для всех . Разница между двоичным и одинарным гораздо больше; на самом деле, это функция от . Вы получаете много, выбирая бинарный вместо одинарного; по сравнению с этим вы получаете намного меньше, выбирая более высокую базу.n log10n log102≈0.3 n n
Есть некоторая правда в том, что реализовать цифровую логику легче, если нам нужно только различать два состояния. Электрические сигналы являются аналоговыми и, как таковые, могут интерпретироваться как представляющие столько дискретных состояний, сколько вы хотите ... но вам нужно более точное (а значит, дорогое и привередливое) оборудование, чтобы надежно различать больше состояний в одном диапазоне. Это предлагает выбрать как можно более низкую базу.
Другое потенциально важное соображение заключается в том, что логика классически понимается как включающая два различных значения: и . Теперь у нас есть более причудливая логика, чем эта, но большая часть математики и естественных наук все еще основывается на довольно фундаментальных понятиях. Когда вы считаете, что компьютеры используются для вычислений, и что логика важна для вычислений, она предлагает иметь хорошую поддержку по крайней мере для двух различных состояний ... но логика на самом деле не требует большего.е L сек еtrue false
источник
Одна из главных причин того, что в большинстве компьютерных схем используются два состояния, заключается в том, что количество схем, необходимых для различения n различных уровней напряжения, приблизительно пропорционально n -1. Следовательно, наличие трех различимых состояний потребует вдвое больше схем на сигнал, а наличие четырех потребует в три раза больше. Увеличение количества схем в три раза при одновременном удвоении объема информации приведет к снижению эффективности.
Обратите внимание, что в некоторых местах на компьютерах хранится или передается информация с использованием более двух состояний на элемент. В массиве флэш-памяти сотни или тысячи ячеек памяти могут обслуживаться одним набором схем измерения уровня. Использование четырех уровней на ячейку вместо двух при хранении определенного объема информации может более чем утроить размер схемы, чувствительной к уровню, но сократить вдвое количество требуемых ячеек памяти. При обмене данными через Ethernet со скоростью 100 base-T или более быстрым, стоимость схемы, необходимой для обнаружения нескольких уровней сигнала на кабеле, вероятно, будет уменьшена из-за необходимости использовать кабель с большим количеством проводов или использовать кабели, которые могут обрабатывать больше сигнальные переходы в секунду без недопустимого уровня искажений.
источник
В исследовательских лабораториях существуют квантовые компьютеры, которые используют 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.x∈Z
источник
В основе вычислительной мощности цифровых компьютеров лежит транзистор, который работает как коммутатор. Повышая ток на «затворе» переключателя, он позволяет току протекать между «коллектором» и «эмиттером» - переключатель включен. Транзистор будет спроектирован для работы в одном из двух режимов - полностью включен или полностью выключен («насыщен») - с четким разделением того, что это за состояния. Транзистор может быстро переключаться между двумя состояниями, оставаясь в состоянии с очень ограниченными ошибками.
Эта схема формирует основу для логических устройств, таких как AND, NAND, OR, XOR и других функций. Функция NAND является самой основной из строительных блоков. Эти логические устройства собраны для обеспечения процессоров, которые остаются в предсказуемом состоянии, и множество транзисторов могут быть упакованы в небольшое пространство для обеспечения необходимой функциональности.
Транзистор может управлять несколькими или различными состояниями, но при работе таким образом они не производят обычные «цифровые» компьютеры - они не склонны оставаться в предсказуемом состоянии, и они подвержены помехам, насыщению, искажению и т. Д. - так они имеют ограниченное применение с точки зрения вычислительных возможностей. Операционные усилители можно было бы считать аналоговыми компьютерами.
источник
Мы используем только двоичный код (1,0), потому что в настоящее время у нас нет технологии для создания «переключателей», которые могут надежно удерживать более двух возможных состояний. (Квантовые компьютеры не продаются в настоящий момент.) Бинарная система была выбрана только потому, что довольно легко отличить наличие электрического тока от отсутствия электрического тока, особенно при работе с триллионами таких соединений. И использование любой другой числовой базы в этой системе смешно, потому что система должна будет постоянно конвертировать между ними. Это все, что нужно сделать.
источник