Есть числа. Они представляются в двоичной системе и последовательно оперируются...
Можно смещать влево, вправо, инвертировать и складывать...
К примеру... есть число 12... в двоичном коде оно выглядит как 1010...
Сместим в лево, получим 10100, что = 24, смещение кстати - умножение или деление на 2.
Смести 1010 в право, получим 101, что = 6; отними от 12 допустим 3(11)
1010 - 0011 = 1010+1100(инвертировали 0011) = 10110, инвентируем, получим 01001 = 9. мааагия...
Умножение реализуется за счёт сдвига и сложения.
Все действия реализуются сумматорами и сдвиговыми регистрами.
Они в свою очередь строятся на элементах и/или/не...
Булевая логика кстати просто описывает принципы и законы работы элементов
Java
Калькулятор работает за счет Булевой логики. Вопрос -как? Как устроен алгоритм. Я не понимаю.
Брат_За_Брата: Брат_За_ Брата:
Единственный ответ из всех сегодняшних, который соответствует вопросу.
Сергей (Казань)
12 в двоичной - это 1100
Сергей (Казань)
"влево" и "вправо" пишется вместе
Сергей (Казань)
А 10100 - это 20, а не 24
Сергей (Казань)
101 - это 5, а не 6
Сергей (Казань)
Вы вообще, знаете двоичную систему, гыгы?
Схемы, реализующие логические операции бинарной логики "НЕ", "И", "ИЛИ" - чрезвычайно просты. Их можно сделать на основе электрических реле или транзисторов. Комбинация двух элементов "И-НЕ" дает схему с двумя устойчивыми состояниями - простейший триггер, элемент памяти. Другие комбинации элементов дают схемы, где комбинация сигналов на выходах элементов соответствует двоичному коду суммы комбинаций сигналов на входах - сумматоры. А с помощью сумматоров и памяти на триггерах уже легко любые арифметические операции реализовать.
Брат_За_Брата: Брат_За_ Брата:
Интересно, сколько раз мне понадобится это прочитать, что бы мой творческий мозг понял смысл...
Там не алгоритм, а логическая функция/операция. Например у тебя есть таблица с входами 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)
Функция готова. Разумеется чем больше параметров, чем сложнее, тем сложнее функция, но есть ещё механизмы оптимизации и уменьшения этого выражения, однако это уже другой вопрос.
x y z
0 0 0
0 1 1 - неX и Y
1 0 0
1 1 1 - X и Y
Всё, что осталось сделать, написать выражение: (неX и Y) или (X и Y)
Функция готова. Разумеется чем больше параметров, чем сложнее, тем сложнее функция, но есть ещё механизмы оптимизации и уменьшения этого выражения, однако это уже другой вопрос.
Вообще-то там разные алгоритмы присутствуют.
Есть исполнительные устройства, например: регистры хранения и сдвига, накапливающий сумматор, схемы быстрого умножения и деления.., при помощи которых реализуются вычисления.
А есть управляющие устройства, которые организуют работу исполнительных устройств в зависимости от текущего состояния вычислений. Строятся на счетчиках, мультиплексорах, дешифраторах, регистрах....
Чтобы все это понять недостаточно просто знать логику или двоичную систему.
Надо серьезно изучать цифровую схемотехнику, прикладную теорию цифровых автоматов...
Есть исполнительные устройства, например: регистры хранения и сдвига, накапливающий сумматор, схемы быстрого умножения и деления.., при помощи которых реализуются вычисления.
А есть управляющие устройства, которые организуют работу исполнительных устройств в зависимости от текущего состояния вычислений. Строятся на счетчиках, мультиплексорах, дешифраторах, регистрах....
Чтобы все это понять недостаточно просто знать логику или двоичную систему.
Надо серьезно изучать цифровую схемотехнику, прикладную теорию цифровых автоматов...
Похожие вопросы
- Должен ли начинающий программист понимать все алгоритмы сразу ?
- Сложность алгоритмов. Теория алгоритмов. Программирование
- Java, алгоритмы и структуры данных.
- Paint. Применяемые алгоритмы и структуры данных.
- Хочу написать программу -калькулятор .Через какой язык мне нужно писать ?/И как вообще писать ?
- Какие алгоритмы нужно знать для создания простой карточной игры на java?
- Вы алгоритмы наизусть знаете или копипасты достаточно?
- Если я буду знать очень хорошо C#, алгоритмы, SQL, и др. вроде умения пользоваться ПК, средой, я хороший прогер?
- Сколько времени займет на JAVA выполнение такого алгоритма?
- Вопрос для людей работающих в IT-сфере