На других языках: Česky Deutsch English Français 中文

Арифметический комбинатор

From Official Factorio Wiki
Jump to navigation Jump to search
Arithmetic combinator.png
Арифметический комбинатор

ArithmeticSprite.png

Затраты

Time.png
0.5
+
Copper cable.png
5
+
Electronic circuit.png
5
Arithmetic combinator.png
1

Всего сырья

Time.png
8
+
Copper plate.png
10
+
Iron plate.png
5

Затраты

Time.png
0.5
+
Copper cable.png
5
+
Electronic circuit.png
5
Arithmetic combinator.png
1

Всего сырья

Time.png
14.25
+
Copper plate.png
22.5
+
Iron plate.png
10

Цвет на карте

Здоровье

150

Размер пачки

50

Потребление

1 kw (электричество)

Время добычи

0.1

Тип объекта

arithmetic-combinator

Внутриигровое имя

arithmetic-combinator

Необходимые технологии

Circuit network (research).png

Делается в

Assembling machine 1.png
Assembling machine 2.png
Assembling machine 3.png
Player.png

Арифметический комбинатор – часть логической сети и один из трех типов комбинаторов, доступных в игре (наряду с постоянным комбинатором и сравнивающим комбинатором). Каждый арифметический комбинатор может выполнять одну из следующих математических операций над сигналами, отображая символ операции сверху:

Arith combinator anim.png

  • сложение (+)
  • вычитание (-)
  • умножение (*)
  • деление (/)
  • остаток (%)
  • возведение в степень (^)
  • битовый сдвиг влево (<<)
  • битовый сдвиг вправо (>>)
  • битовое И (&)
  • битовое ИЛИ (|)
  • исключающее ИЛИ (^)

Арифметический комбинатор принимает два входящих соединения (красный и зеленый провода) и отправляет результат операции на оба выходных соединения. Входящие провода подключаются к узелкам на левой стороне спрайта на боковой панели, а провода для выходного подключения – на правой стороне.

Функции

Внутренняя логика процесса состоит из трех шагов:

  1. Все входящие сигналы на красном и зеленом проводах складываются внутри комбинатора.
  2. Определённая операция выполняется над выбранным сигналом.
  3. Результат этой операции выводится в качестве выбранного выходного сигнала.

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

Если левый операнд это одиночный сигнал, то на выходе также должен быть одиночный сигнал. Операция выполняется над значениями выбранных левого и правого сигналов, а результат отправляется на выход выбранного сигнала.

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

Примечания по операциям

При использовании деления, результатом является целое число:

  • 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

Битовый сдвиг влево и битовый сдвиг вправо – не арифметические операции. В действительности эти операции работают с числами в двоичной записи. Нули и единицы, из которых состоит число, сдвигаются в выбранном направлении, результатом чего может стать совершенно иное число, из-за изменений в двоичной записи числа.

Пример битового сдвига влево.

См. также