Java

Калькулятор работает за счет Булевой логики. Вопрос -как? Как устроен алгоритм. Я не понимаю.

Есть числа. Они представляются в двоичной системе и последовательно оперируются...
Можно смещать влево, вправо, инвертировать и складывать...

К примеру... есть число 12... в двоичном коде оно выглядит как 1010...
Сместим в лево, получим 10100, что = 24, смещение кстати - умножение или деление на 2.
Смести 1010 в право, получим 101, что = 6; отними от 12 допустим 3(11)
1010 - 0011 = 1010+1100(инвертировали 0011) = 10110, инвентируем, получим 01001 = 9. мааагия...
Умножение реализуется за счёт сдвига и сложения.

Все действия реализуются сумматорами и сдвиговыми регистрами.
Они в свою очередь строятся на элементах и/или/не...

Булевая логика кстати просто описывает принципы и законы работы элементов
НК
Николай Крутских
15 046
Лучший ответ
Брат_За_Брата: Брат_За_ Брата: Единственный ответ из всех сегодняшних, который соответствует вопросу.
Сергей (Казань) 12 в двоичной - это 1100
Сергей (Казань) "влево" и "вправо" пишется вместе
Сергей (Казань) А 10100 - это 20, а не 24
Сергей (Казань) 101 - это 5, а не 6
Сергей (Казань) Вы вообще, знаете двоичную систему, гыгы?
Схемы, реализующие логические операции бинарной логики "НЕ", "И", "ИЛИ" - чрезвычайно просты. Их можно сделать на основе электрических реле или транзисторов. Комбинация двух элементов "И-НЕ" дает схему с двумя устойчивыми состояниями - простейший триггер, элемент памяти. Другие комбинации элементов дают схемы, где комбинация сигналов на выходах элементов соответствует двоичному коду суммы комбинаций сигналов на входах - сумматоры. А с помощью сумматоров и памяти на триггерах уже легко любые арифметические операции реализовать.
KN
Kemel Nuriev
75 429
Брат_За_Брата: Брат_За_ Брата: Интересно, сколько раз мне понадобится это прочитать, что бы мой творческий мозг понял смысл...
Там не алгоритм, а логическая функция/операция. Например у тебя есть таблица с входами x y и результат логической функции z.
x y z
0 0 0
0 1 1 - неX и Y
1 0 0
1 1 1 - X и Y
Всё, что осталось сделать, написать выражение: (неX и Y) или (X и Y)
Функция готова. Разумеется чем больше параметров, чем сложнее, тем сложнее функция, но есть ещё механизмы оптимизации и уменьшения этого выражения, однако это уже другой вопрос.
Вообще-то там разные алгоритмы присутствуют.
Есть исполнительные устройства, например: регистры хранения и сдвига, накапливающий сумматор, схемы быстрого умножения и деления.., при помощи которых реализуются вычисления.
А есть управляющие устройства, которые организуют работу исполнительных устройств в зависимости от текущего состояния вычислений. Строятся на счетчиках, мультиплексорах, дешифраторах, регистрах....
Чтобы все это понять недостаточно просто знать логику или двоичную систему.
Надо серьезно изучать цифровую схемотехнику, прикладную теорию цифровых автоматов...
AM
Aisultan Mishanov
41 117