Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Болталка (https://forum.antichat.xyz/forumdisplay.php?f=46)
-   -   От формул к процессору/@K (https://forum.antichat.xyz/showthread.php?t=91893)

-=Kern=- 15.11.2008 13:54

От формул к процессору/@K
 
Часть I

Привет всем.
Этим уроком я открываю цикл статей посвященных – логике, и самое главное логическим основам работы процессора. Вы поймете, как работает процессор на физическом и логическом уровнях. И возможно, захотите собрать эту не большую вещицу – своими руками!
Но для начала нам нужно изучить формальную логику и начнем с основных логических операций:
Всего может быть два возможных состояния – Сильный сигнал и Слабый, Истинна и Ложь, 1 и 0.

Первая логическая операция.

Логическое отрицание - ИНВЕРСИЯ - если исходное выражение истинно, то результат отрицания будет ложным, и наоборот, если исходное выражение ложно, то результат отрицания будет истинным. Например:

A ____неА
1_____ 0
0_____1


С = A & B.

Вторая логическая операция.

Логическое умножение - КОНЪЮНКЦИЯ - это выражение будет истинно в одном случае, когда оба значения верны. Например, высказывание “Дождь будет утром и вечером”, верно только в одном случае если дождь будет и утром и вечером, а ложно, если дождь будет вечером, а утром не будет и наоборот.


A & B = С
1__1= 1
1__0= 0
0__1= 0
0__0= 0


То есть Истинна и Истинна = Истинна
Истинна и Ложь = Ложь
Ложь и Истинна =Ложь
Ложь и Ложь = Ложь


Как и говорил, наше выражение будет истинным только в одном случае.

Третья логическая операция.

С = A + B

Логическое сложение – ДИЗЪЮНКЦИЯ - это выражение будет истинно во всех случаях, кроме одного, когда оба значения ложны. Например, высказывание Дождь будет утром или вечером, означает следующее – Дождь будет только вечером, - Дождь будет только утром, - Дождь будет и утром и вечером. Но из-за характерных особенностей русского языка многие считают, что это высказывание означает, Дождь будет только вечером, либо Дождь будет только утром, а третьего в расчет не берут.


A + B = С
1__1= 1
1__0= 1
0__1= 1
0__0= 0


То есть Истинна или Истинна = Истинна
Истинна или Ложь = Истинна
Ложь или Истинна = Истинна
Ложь или Ложь = Ложь


Как и говорил, наше выражение будет ложно только в одном случае.

Четвертая логическая операция.

Логическое следование: ИМПЛИКАЦИЯ - связывает два простых логических выражения, из которых первое является условием , а второе – следствием из условия. Это было научное определение так сказать, а сейчас объясню, что все это значит = короче представьте вам дали решить задачу, и условия к этой задачи тоже дали(исходные данные), вам осталась подумать над решением. Рассмотрим эту ситуацию:
Вам дали правильные исходные данные к задаче – решали правильно, значит решили правильно(истинно).
Вам дали правильные исходные данные к задаче – но решали не правильно, значит решили неправильно(ложь).
Вам дали неправильные исходные данные к задаче – но решали вы все равно правильно(чудо), значит решили правильно(истинна).
Вам дали неправильные исходные данные к задаче – решали неправильно, значит решили неправильно(истинна). Спросите почему Истинна? А как вы могли решить если исходные данные не верны, значит в итоге истинна.


A B = С
1__1= 1
1__0 =0
0__1= 1
0__0= 1

Ложь тока в одном случае, когда думали не правильно.

Пятая логическая операция.

Логическая равнозначность: ЭКВИВАЛЕНТНОСТЬ - определяет результат сравнения двух простых логических выражений А и В. Результатом ЭКВИВАЛЕНТНОСТИ является новое логическое выражение, которое будет истинным тогда и только тогда, когда оба исходных выражения одновременно истинны или ложны. Короче истина ЭКВИВАЛЕНТНА истине. А ложь ЭКВИВАЛЕНТНА лжи.


A B = С
1__1 = 1
1__0 = 0
0__1 = 0
0__0 =1


Э то основные логические операции, через них можно выразить все остальные. Хотя ели сказать по секрету, то основных операции всего три

Логическое отрицание - ИНВЕРСИЯ
Логическое умножение - КОНЪЮНКЦИЯ
Логическое сложение – ДИЗЪЮНКЦИЯ


Через них выражаются и ИМПЛИКАЦИЯ, и ЭКВИВАЛЕНЦИЯ и остальные. В последующих статьях мы это разберем - а пока усвойте этот материал. И если усвоите, то вы на шаг приблизитесь к пониманию работы процессора и всего остального.



(c)Kerny

-=Kern=- 15.11.2008 14:21

Часть II

Привет всем – надеюсь вы хорошо усвоили материал прошлой статьи! сегодня мы изучим правила преобразования логических выражений….
Так для начала условимся – Логическое произведение (КОНЬЮНКЦИЯ) – записываем так A*B (логическое произведение А на В) или можно еще записывать так А&B.
Логическое сложение (ДИЗЪЮНКЦИЯ) – записываем так А+В , можно еще записать по другому на клавиатура мне не позволяет….
Логическое отрицание (ИНВЕРСИЯ) – записывать будем, как неА.

Закон непротиворечия

Закон непротиворечия, означает следующее A не может быть равно своему отрицанию,
неA *A=0
Например есть выражение A *неA+B, догадайтесь чему оно будет равно? Правильно A *неA+B=B.

Закон исключения третьего

Высказывание может быть либо истинным либо ложным, третьего не дано. Это означает, что результат логического сложения высказывания и его отрицания принимает значение истинна.
А+неА=1
Да и незабываем , 1 - это истинна, 0 – это ложь. Что бы, было легче можно представлять , так «+», это «или», «*» - это «и», а инверсия – тут и так понятно….

Закон двойного отрицания

Если выражение дважды отрицается, то в результате мы получим исходное высказывание. Например:
ненеА=А
Так же, как в Алгебре минус на минус - дает плюс.
Закон тождества
Всякое высказывание тождественно самому себе. Например А=А.

Законы Моргана:


Первый закон Де Моргана.

не(А + В)= неА* неВ
Отрицание выражения (А или В) равно неА и неБ, давайте проверим!? Для этого построим так называемую таблицу истинности:

А______В_____неА____неВ__(А+В)__Не(А+ В)___неА* неВ
0______0______1______1_____0______1_________1
0______1______1______0_____1______0_________0
1______0______0______1_____1______0_________0
1______1______0______0_____1______0_________0


Сначала, даем начальные значения А и Б, затем их инвертируем, после подвергаем значения А и В дизъюнкции (операция «или»), затем то, что получилось инвертируем и получаем – одну единицу и три нуля… Теперь берем значения неА и неВ и подвергаем коньюнкции(логическое умножение) и в результате получаем , единицу и три ноля… тоесть не(А + В)= неА* неВ, формула верна

Второй закон Де Моргана.

не(А*В)= неА + неВ

А______В______неА___неВ__(А*В)___Не(А *В) ______неА+ неВ
0______0______ 1_____1______0______1_____________1
0______1______ 1_____0______0______1_____________1
1______0______ 0_____1______0______1_____________1
1______1______ 0_____0______1______0_____________0


Тоже самое здесь - формула верна. Мы сейчас строили таблицы истинности – вообще-то это проходится по информатике….
А теперь пару примеров:
Не(А+В)*(А*неВ)
Начнем, видим в первой части выражения не(А+В) – первый закон Де Моргана – преобразовываем:
НеА*неВ*(А*неВ), раскроем скобки
НеА*неВ*А*неВ, видим неА и А, - закон непротиворечия .
Остается
0*НеВ*неВ
Смотрим НеВ*неВ, ага это равно просто неВ, спросите почему? Допустим есть некое третье значение например, значение С.
С*неВ*неВ=С*неВ, допустим С=0
А неВ равно 1, тогда
0*1*1=0, а это тоже самое что и 0*1.
Вот и получается, что неВ*неВ, равно просто неВ. Так вернёмся к примеру:
Получаем,
0*неВ=0, тут можно пойти двумя путями, первый я назвал его алгебраический – умножение на ноль всегда дает ноль, или второй логический:
У нас операция конъюнкция(вспоминаем союз «и») а эта операция так сказать истинна только в одном случае, когда оба значения истинны, тоесть 1*1=1, смотрим на первый множитель нашего выражения он уже равен нолю… Значит чему бы небыло равно, значение неВ, хоть 1 хоть 0, всегда будет ложь(ноль). В принципе остальные примеры решаются также.
Наверное, сейчас вы задаетесь мыслями, а зачем это? Хотел написать ответ в этой статье, но передумал, скажу лишь, что узнаете в последующих статьях. Это только начало!



(c)Kerny

-=Kern=- 15.11.2008 14:37

Часть III

Привет всем!
Итак, третья статья из цикла!

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

A _________B ________С
1__________1________1
1__________0________0
0__________1________0
0__________0________1


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

A _________B ________С
1__________1________1


Тоесть при значениях А=1, B=1, нужно получить значение С=1. В чем проблема? - спросите вы. Это же обычная конъюнкция 1*1=1, Да это конъюнкция, но она нам не подходит – не забываем, что мы должны решить задачу в общем виде – заменим выражение 1*1=1 формулой А*В=С, и попробуем, подставить другие значения например 0*0=0, и видим, что это не подходит т.к при эквиваленции 0*0=1, а теперь не большой секрет – то, что я только что вам втирал можно было опровергнуть иначе, просто подумав – это же одна логическая операция – конъюнкция, а конъюнкция не может быть равна эквиваленции, отсюда вывод в нашей формуле должно быть больше одной логической операции, и еще если вы хорошо усвоили предыдущий материал, то должны знать, что 1*1*1=1, тоже не подойдет, т. к после преобразования получиться 1*1=1, отсюда еще один вывод, наша формула не должна преобразовываться, найдем нашу формулу:
Пробуем разные комбинации, ниже подставляем вместо букв значения и сравниваем их с таблицей эквиваленции …
________________
A*B+B=C
1*1+1=1
1*0+0=0
0*1+1=1

Уже не подходит.
____________________
A*B+А*B=C
1*1+1*1=1
1*0+1*0=0
0*0+0*0=0

не подходит
____________________
A*B+неА*неB=C
1*1+не1*не1=1
1*0+не1*не0=0
0*1+не0*не1=0
0*0+не0*не0=1

____________________
Ура! Нашли нужную нам формулу!
Итак, мы выяснили, что эквиваленцию можно выразить следующей формулой :
A*B+неА*неB=C
Импликацию мы не будем выражать, я показал вам лишь ход мыслей….
Формула импликации: неА+В
A _________B ________С
1__________1________1
1__________0________0
0__________1________1
0__________0________1


А теперь, рассмотрим, как это все изображается – схемами. Люди знакомые с программированием знают, что алгоритм программы можно изображать в виде блок схем, так вот здесь это тоже имеет место быть…. И это называется это логическими схемами.
Так как, основных логических операций всего три, то и логических элементов будет три…
Смотрите рисунок:
____________________________
http://img3.imageshost.ru/imgs/c5708...378dc5c128.jpg
____________________________
Итак, вы видите коньюнктор, у него всегда два входа и один выход, на вход подаются А и В (для отличия его от дизъюнктора добавляется символ & см. рисунок), в результате на выходе будет А*В, например:
Подаются значения 1 и 0, в результате будет 0.
Ниже дизъюнктор , у него всегда два входа и один выход, на вход подаются А и В (для отличия его от коньюнктора добавляется символ 1 см. рисунок), в результате на выходе будет А+В, например:
Подаются значения 1 и 0, в результате будет 1.
И последний элемент инвертор, у него один вход и один выход, если на вход подать 1 то результатом будет 0 и наоборот.
Это так сказать промежуточная статья – так, что не ругайте…. Скоро будет еще интереснее.


(c)Kerny

-=Kern=- 15.11.2008 14:41

Часть IV

Приступим, в предыдущей статье мы рассмотрели основные логические элементы, теперь разберемся с логическими схемами, попробуем построить схему для логического выражения
B∙неА+неB∙A=C

______________________________
http://img3.imageshost.ru/imgs/a6bf1...9a10eb046b.jpg
______________________________

Надеюсь, принцип вы поняли. Теперь рассмотрим физическую реализацию логических элементов,
Начнем с элемента “не”.

______________________________
http://img3.imageshost.ru/imgs/f6ae9...a7b380d6da.jpg
______________________________

Как видим на рисунке если подаем 0, то ничего не происходит…. Если 1, то канал закрывается и газ не проходит(может быть и жидкость). Надеюсь понятно.
Логическое сложение:

______________________________
http://img3.imageshost.ru/imgs/398c0...7327de411a.jpg
______________________________

Как видим из рисунка, у нас получается:

A _________B ________С
1__________1________0
1__________0________0
0__________1________0
0__________0________1


А, надо:

A _________B ________С
1__________1________1
1__________0________1
0__________1________1
0__________0________0


Что ж - это не проблема, нам всего лишь нужно инвертировать полученный результат

A _________B ________С________неС
1__________1________0________1
1__________0________0________1
0__________1________0________1
0__________0________1________0


А при физической реализации, добавить в схему инвертор.
Логическое умножение:

______________________________
http://img3.imageshost.ru/imgs/4600e...0d2da3e7d4.jpg
______________________________

И тут тоже придется добавить инвертор.

A _________B ________С________неС
1__________1________0________1
1__________0________1________0
0__________1________1________0
0__________0________1________0


Что ж вот основной принцип…

А теперь займемся непосредственно формулами и логическими схемами, сегодня нам предстоит не много не мало, а придумать схему так называемого «полусумматора двоичных чисел», ведь мы знаем, что достаточно научить схему одному арифметическому действию – сложению, и получим какой ни какой, а процессор!

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

1+1=10
1+0=1
0+1=1
0+0=0


Можете проверить с помощью калькулятора Windows.
Что бы вам легче было понять, составим таблицу:

(Арифметическое сложение, а не логическое, обратите внимание на знак «=», p s идут как одно число, это для того, что бы было видно разрядность числа )

A ____+____B ____=___P________S
1__________1________1________0
1__________0________0________1
0__________1________0________1
0__________0________0________0


A и В, числа которые складываем (в двоичной системе счисления), S – результат сложения (сумма), P – перенос из разряда, это нужно для случая 1+1=10, так как здесь, получается 10 (правильно говорить не десять, а один и ноль), то 1 пойдет в перенос (P) , а 0 в сумму (s), таким образом значение суммы(s) 0,1,1,0, значит мы должны найти такую формулу, при которой

(Арифметическое сложение, а не логическое)

A ____+____B _____=_____S
1__________1___________0
1__________0___________1
0__________1___________1
0__________0___________0

В одной из статей я показывал, как это делается – простым подбором. Вот искомая формула:

S=(A+B)*не(A*B)

Можете её проверить, вы это уже умеете.

Для переноса (P)

(Арифметическое сложение, а не логическое)

A ____+____B _____=_____P
1__________1___________1
1__________0___________0
0__________1___________0
0__________0___________0


Тут и думать нечего, P=A*B, начертим логическую схему полусумматора двоичных чисел:

______________________________
http://img3.imageshost.ru/imgs/a5099...886a7b022d.jpg
______________________________

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

Желаю удачи!

(c)Kerny

Sinay 15.11.2008 19:45

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

-=Kern=- 19.11.2008 16:08

ЭМ.. не согласен

gisTy 19.11.2008 16:21

учебник по дискретке копипастить не круто

-=Kern=- 19.11.2008 16:28

Цитата:

Сообщение от gisTy
учебник по дискретке копипастить не круто

Я и не копипастил...

smOleg 19.11.2008 19:34

а зачем это знать?

rushter 19.11.2008 19:41

Если на программиста учишься,этому всегда учат :)


Время: 11:03