Арифметичний комбінатор
Арифметичний комбінатор |
Інгредієнти |
|||||||||||||
+ + → | |||||||||||||
Сировини загалом |
|||||||||||||
+ + | |||||||||||||
Колір на мапі |
|||||||||||||
Здоров’я |
|
||||||||||||
Розмір стеку |
50 |
||||||||||||
50 (1 stack) |
|||||||||||||
Макс. споживання |
1 kw (Електрика) |
||||||||||||
Час добування |
0.1 |
||||||||||||
Тип об’єкту |
|||||||||||||
Внутрішньоігрова назва |
arithmetic-combinator |
||||||||||||
Потребує технологію |
|||||||||||||
Виробляється в |
|||||||||||||
Арифметичний комбінатор є частиною логічної мережі і одним із трьох типів комбінаторів, доступних у грі (разом із постійним комбінатором і порівняльним комбінатором). Кожен арифметичний комбінатор може виконувати будь-яку з наступних математичних операцій над сигналами та показуватиме відповідний символ у верхній частині:
- додавання (+)
- віднімання (−)
- множення (*)
- ділення (/)
- модуль (%)
- піднесення до степеня (^)
- зсув біта вліво (<<)
- зсув біта вправо (>>)
- побітове І (&)
- побітове АБО (|)
- виключаюче АБО (^)
Арифметичний комбінатор приймає два вхідних з’єднання (червоний і зелений дроти) і надсилає свій вихід на обидва вихідні з’єднання. Вхідні дроти підключаються до виступів на лівій стороні корпусу на бічній панелі, тоді як виходи підключаються до правої сторони.
Функціонал
Внутрішній логічний процес має три етапи:
- Усі вхідні сигнали на червоному та зеленому проводах підсумовуються в комбінаторі.
- Зазначена операція виконується над вибраним сигналом(ами).
- Результат цієї операції виводиться як вибраний вихідний сигнал.
Операндами можуть бути будь-які одиничні сигнали або постійні значення. До одного з операндів може бути застосовано віртуальний сигнал кожен.
Якщо жоден з операндів не є сигналом кожен, вихід має бути одним сигналом. Операція виконується над значеннями вибраного лівого та правого сигналів, а результат надсилається на вихід за вказаним сигналом.
Якщо одним операндом є сигнал кожен, тоді вихідним сигналом може бути один сигнал або сигнал кожен. Якщо вихідним сигналом є сигнал кожен, тоді операція виконується окремо над значенням кожного вхідного сигналу разом із значенням іншого операнда, і кожен результат надсилається на вихід за тим самим сигналом. Якщо виходом є один сигнал, операція виконується над кожним із вхідних сигналів, усі окремі результати додаються разом, і цей результат надсилається на вихід за вказаним сигналом.
Зауваження щодо операцій
При використанні ділення результат скорочується:
- 21 / 10 = 2
- 19 / 10 = 1
- −21 / 10 = −2
- −19 / 10 = −1
- 21 / −10 = −2
- 19 / −10 = −1
- −21 / −10 = 2
- −19 / −10 = 1
Модуль, позначається за допомогою %, як це в більшості мов програмування, є залишком після ділення. Наприклад, 13 % 3 дорівнює 1 (13 = 4 * 3 + 1). Це можна, наприклад, поєднати з скороченням, як описано вище, щоб відокремити окремі цифри числа для використання у побудові візуальних індикаторів:
- (24321 / 10000) % 10 = 2
- (24321 / 1000) % 10 = 4
- (24321 / 100) % 10 = 3
- (24321 / 10) % 10 = 2
- (24321 / 1) % 10 = 1
Від’ємність лівого операнда модуля мінусує результат, тоді як від’ємність правого операнда нічого не робить:
- 13 % 3 = 1
- 13 % −3 = 1
- −13 % 3 = −1
- −13 % −3 = −1
Зсув біта вліво і Зсув біта вправо не є арифметичними. Натомість ці параметри стосуються чисел у бінарному стані. 0 і 1, які складають число, зсуваються у вказаному напрямку, що може призвести до зовсім іншого числа через зміну бінарного значення.