home | login | register | DMCA | contacts | help | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


my bookshelf | genres | recommend | rating of books | rating of authors | reviews | new | форум | collections | читалки | авторам | add



О чем вообще речь и как можно говорить о сложении, если я даже не знаю, как работают компьютеры?

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

Что произойдет, если заменить «истинно» на «1», а ложно на «0»?

Ну, у вас есть таблица истинности для p и ¬p, которая выглядит подобным образом (табл. 19)…


Таблица 19. Таблица истинности для p и ¬p

Как изобрести все

…и которую можно превратить в список ожидаемых входных и выходных состояний бинарной машины – мы называем их «ячейками», – выглядящий следующим образом (табл. 20).


Таблица 20. Узрите же, ибо это первое в мире представление НЕТ-ячейки

Как изобрести все

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

Ее можно даже нарисовать в виде схемы (рис. 62).


Как изобрести все

Рис. 62. Представление НЕТ-ячейки в графическом виде


К этому моменту у вас еще нет ни малейшего представления, как построить эту НЕТ-машину, но по меньшей мере вы знаете, что она предположительно должна делать. Поскольку же вы вовсе не обязаны «создать эту чертову штуку прямо сейчас», то мы можем рассмотреть и другие операции.

елом являлось истинным. Другими словами, «(pq)» будет истинным только в том случае, если истинны и p, и q, и ложным в любой другой ситуации.

Вот таблица истинности, которая показывает это наглядным образом (табл. 21).


Таблица 21.

Как изобрести все

И точно так же, как и в случае с «не», необходимо трансформировать «истинно» и «ложно» в единицы и нули, чтобы создать первую в мире И-ячейку, которую мы представим следующим образом (табл. 22, рис. 63).


Таблица 22. Входы и выходы для И-ячейки

Как изобрести все

Единственная деталь головоломки, которой нам не хватает, – это «или», нечто противоположное «и».

Операция «или» между p и q символизируется так (pq), и «(pq)» будет истинным в случае, если либо p либо q истинно.


Как изобрести все

Рис. 63. Представление И-ячейки в графическом виде


Таблица истинности для ИЛИ-ячейки выглядит следующим образом (табл. 23, рис. 64).


Таблица 23. Входы и выходы для ИЛИ-ячейки

Как изобрести все

Как изобрести все

Рис. 64. ИЛИ-ячейка


Три базовые ячейки можно использовать для того, чтобы сконструировать более сложные. Например, поставьте НЕТ-ячейку после И-ячейки, и у вас получится НЕТИ-ячейка, выглядящая следующим образом (табл. 24, рис. 65).


Таблица 24. Входы и выходы для НЕТИ-ячейки

Как изобрести все

Как изобрести все

Рис. 65. Полная НЕТИ-ячейка


С целью сохранения времени мы не рисуем НЕТ-ячейку и И-ячейку вместе, мы совмещаем их в одном изображении, вот так (рис. 66).


Как изобрести все

Рис. 66. Упрощенная НЕТИ-ячейка


НЕТИ-ячейка функционирует точно так же, как НЕТИ-ячейка, которую мы нарисовали сначала, но ее можно изобразить быстрее.

И мы можем продолжить, комбинируя разные ячейки, используя НЕТИ-ячейку, ИЛИ-ячейку и И-ячейку, чтобы создать новую ячейку, которая даст на выходе 1, если и только если на одном из входов есть 1. Любой другой вариант, и на выходе будет 0. Подобная ячейка именуется «эксклюзивное или» (ЭИЛИ), и ниже показано, как ее создать (рис. 67, табл. 25).


Как изобрести все

Рис. 67. Полная ЭИЛИ-ячейка


Таблица 25. Таблица истинности, доказывающая, что вы можете получить ЭИЛИ-ячейку из НЕТИ-ячейки, ИЛИ-ячейки и И-ячейки

Как изобрести все

И точно так же, как и в предыдущем случае, мы дадим этой ячейке собственный символ (рис. 68).


Как изобрести все

Рис. 68. Упрощенная ЭИЛИ-ячейка


Забавный факт: кроме НЕТИ-ячейки и ЭИЛИ-ячейки, которые вы только что придумали, вы можете на самом деле сконструировать ячейку, дающую любой возможный набор выходных данных, используя только И-ячейку, ИЛИ-ячейку и НЕТ-ячейку, с которых вы начинали[239].


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