Подтвердить что ты не робот

Двоичные, плавающие и современные компьютеры

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

Мой вопрос, зная это, почему мы все еще используем двоичную базу в качестве базы для компьютерных операций? Разумеется, использование большего базового числа, чем 2, будет увеличивать точность операций с плавающей запятой экспоненциально, не так ли?

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

4b9b3361

Ответ 1

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

Игнорируя тот факт, что транзисторы просто работают таким образом, использование другой базы (например, базы 3) потребует, чтобы эти схемы работали в промежуточном состоянии напряжения (или нескольких), а также 0 В и их самом высоком рабочем напряжении. Это сложнее и может привести к проблемам на высоких частотах - как вы можете определить, проходит ли сигнал только между 2V и 0V или фактически при 1V?

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

Обновление: вы также должны проверить Tunguska, трехмерный эмулятор компьютера. Он использует base-3 вместо base-2, что делает некоторые интересные (хотя и разумные) понятия.

Ответ 2

Прежде всего: вы не можете представлять все реальные числа, даже когда используете say, base 100. Но вы уже это знаете. В любом случае, это означает: неточность всегда возникает из-за того, что "не может представлять все реальные числа".

Теперь поговорим о , что могут принести вам более высокие базы при выполнении математики? ": Более высокие базы привносят ровно " ничего " с точки зрения точности. Почему?

Если вы хотите использовать базу 4, то 16-значное базовое число 4 обеспечивает ровно 4 16 разные значения.

Но вы можете получить одинаковое количество различных значений из 32-значного номера базы 2 (2 32= 4 16).

Как уже сказал еще один ответ: транзисторы могут быть включены или выключены. Таким образом, ваши вновь разработанные базовые 4 регистры должны быть абстракцией (бит 2) ON/OFF "бит". Это означает: используйте два "бита", чтобы представить базовую цифру 4. Но вы все равно получите ровно 2 уровня N потратив N 'бит' (или N/2 базовые 4 цифры). Вы можете получить более точную точность, потратив больше битов, а не на увеличение базы. Какая база, которую вы себе представляете/абстрагируете, ваши номера должны находиться (например, как printf может печатать эти номера базового 2 в базе 10) на самом деле просто вопрос абстракции, а не точности.

Ответ 3

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

Базовая 2 выбрана, как и Polynomial, для причины реализации, поскольку легче дифференцировать 2 уровня энергии.

Мы либо бросаем больше места для представления большего числа чисел/повышения точности, либо ограничиваем диапазон, который мы хотим кодировать, или их сочетание.

Ответ 4

Ваш первый абзац имеет смысл, но второй не является секвенсором. Большая база не повлияет на точность.

Чрезмерное число зависит от объема используемого для него хранилища - например, двоичное число из 16 бит имеет ту же точность, что и базовое число 2 x 256, - ​​оба занимают одинаковое количество информации.

См. Обычная ссылка с плавающей точкой. для более подробной информации - и она обобщает все базы.

Да, компьютеры были созданы с использованием других баз - я знаю те, которые используют базу 10 (десятичная) cf wikipaedia

Ответ 5

Это сводится к тому, чтобы получить максимальную пользу от доступной области чипа.

Если вы используете переключатели on/off для представления чисел, вы не можете получить больше точности для каждого коммутатора, чем с представлением base-2. Это просто потому, что N переключателей могут представлять 2 ^ N величин независимо от того, что вы выбираете для этих значений. Были ранние машины, в которых использовались цифры с плавающей запятой 16-й базы, но для каждого из них требовалось 4 двоичных бита, поэтому общая точность на бит была такой же, как и базовая 2 (фактически несколько меньше из-за краевых случаев).

Если вы выбираете базу, которая не имеет значения 2, точность, очевидно, теряется. Например, вам нужно 4 бита для представления одной десятичной цифры, но 6 из доступных значений этих 4 бит никогда не используются. Эта система называется двоично-кодированной десятичной и она все еще используется время от времени, обычно при выполнении вычислений с деньгами.

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

Природа мира и математика - это то, что делает ситуацию с плавающей точкой безнадежной. Существует иерархия реальных чисел Integer → Rational → Algebraic → Transendental. Там замечательное математическое доказательство, диагонализация Кантора, что большинство чисел, т.е. "Большая бесконечность", чем другие наборы, являются Transdendental. Тем не менее, независимо от того, какую систему с плавающей запятой вы выберете, все равно будут иметься низкие рациональные числа без идеального представления (т.е. 1/3 в базе 10). Это наша вселенная. Никакое количество умного аппаратного дизайна не изменит его.

Программное обеспечение может и использует рациональные представления, сохраняя числитель и знаменатель как целые числа. Однако с этим ваши руки программиста связаны. Например, квадратный корень не "закрыт". Sqrt (2) не имеет рационального представления.

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

Ответ 6

Да, есть/были компьютеры, которые используют не двоичные (т.е. другие представления и арифметику 2): Десятичные компьютеры.

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

Ответ 7

Я не ЭЭ, поэтому все, что я говорю ниже, может быть совершенно неверным. Но...

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

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

Ответ 8

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

  • Все номера компьютеров являются конечными, поэтому любое число, которое требует бесконечное число цифр не может быть точно представлено на компьютер, независимо от того, какая база чисел выбрана. Итак, что касается pi, e, и большинство других действительных чисел.
  • Какая бы ни была выбрана база, возникнут трудности, представляющие (конечно) некоторые дроби. База 2 может только приближать любую фракцию с коэффициентом 3 в знаменателе, но база 5 или основание 7 тоже.

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

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

Ответ 9

Я проголосую за то, что мы переходим к хранилищу системных номеров Rational. Два 32-битных интергера, которые будут оцениваться как p/q. Умножение и разделение будут действительно дешевыми операциями. Да, будут избыточные оцененные числа (1/2 = 2/4), но кто действительно использует полный динамический диапазон 64-битного двойника в любом случае.

Ответ 10

Я не инженер-электрик и не математик, поэтому учтите это, когда я сделаю следующее выражение:

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