Sterownik arytmetyczny
| Sterownik arytmetyczny | 
| 
 Receptura  | 
|||||||||||||
| ++ → | |||||||||||||
| 
 Łącznie surowce  | 
|||||||||||||
| ++ | |||||||||||||
| 
 Kolor na mapie  | 
|||||||||||||
| 
 Zdrowie  | 
  | 
||||||||||||
| 
 Wielkość stosu  | 
 50  | 
||||||||||||
| 
 50 (1 stos)  | 
|||||||||||||
| 
 Zużycie energii  | 
 1 kw (elektryczny)  | 
||||||||||||
| 
 Czas wydobycia  | 
 0.1  | 
||||||||||||
| 
 Rodzaj prototypu  | 
|||||||||||||
| 
 Nazwa wewnętrzna  | 
 arithmetic-combinator  | 
||||||||||||
| 
 Wymagana technologia  | 
|||||||||||||
| 
 Produkowane w  | 
|||||||||||||
Sterownik arytmetyczny jest częścią sieci sterowniczej i jednym z czterech sterowników dostępnych w grze (wraz z sterownikiem stałym, sterownikiem decyzyjnym i sterownikiem sortującym). Ekran na górze maszyny pokazuje symbol wybranej operacji. Sterownik może wykonać jedną z poniższych operacji na doprowadzonych sygnałach:
- dodawanie (+)
 - odejmowanie (−)
 - mnożenie (*)
 - dzielenie (/)
 - modulo (%)
 - potęgowanie (^)
 - przesunięcie bitowe w lewo (<<)
 - przesunięcie bitowe w prawo (>>)
 - bitowa operacja AND (&)
 - bitowa operacja OR (|)
 - bitowa operacja XOR (^)
 
Sterownik arytmetyczny przyjmuje dwa połączenia wejściowe (czerwony i zielony przewód) i wysyła dane wyjściowe do obu połączeń wyjściowych. Przewody wejściowe podłącza się do terminali po lewej stronie maszyny, a przewody wyjściowe do terminali po prawej stronie maszyny.
Działanie
Operandy mogą być dowolnym pojedynczym sygnałem lub stałą wartością. Maksymalnie jeden z operandów może być wirtualnym sygnałemkażdy. Dla każdego operandu sygnału można wybrać przewody wejściowe. Jeśli wybrane zostaną oba przewody, wejścia są sumowane.
Jeśli żaden z operandów nie jest sygnałem "każdy", wyjście musi być pojedynczym sygnałem. Operacja jest wykonywana na wartościach wybranego lewego i prawego sygnału, a wynik jest wysyłany do wyjścia na określonym sygnale.
Jeśli jednym z operandów jest sygnał "każdy", wówczas wyjście może być pojedynczym sygnałem lub sygnałem "każdy". Jeśli wyjście jest sygnałem "każdy", wówczas operacja jest wykonywana indywidualnie na wartości każdego sygnału wejściowego wraz z wartością drugiego operandu, a każdy wynik jest wysyłany do wyjścia na tym samym sygnale. Jeśli wyjście jest pojedynczym sygnałem, operacja jest wykonywana na każdym z sygnałów wejściowych, poszczególne wyniki są sumowane, a ostateczny wynik jest wysyłany do wyjścia na określonym sygnale.
Uwagi dotyczące operacji arytemtycznych
W przypadku użycia dzielenia wynik jest obcinany po przecinku:
- 21 / 10 = 2
 - 19 / 10 = 1
 - −21 / 10 = −2
 - −19 / 10 = −1
 - 21 / −10 = −2
 - 19 / −10 = −1
 - −21 / −10 = 2
 - −19 / −10 = 1
 
Modulo, oznaczane za pomocą %, jak w większości języków programowania, to reszta z dzielenia. Na przykład 13 % 3 to 1 (13 = 4 * 3 + 1). Operator można połączyć na przykład z obcinanym dzieleniem, jak opisano powyżej, aby oddzielić poszczególne cyfry liczby do wykorzystania w budowaniu wizualnych wskaźników:
- (24321 / 10000) % 10 = 2
 - (24321 / 1000) % 10 = 4
 - (24321 / 100) % 10 = 3
 - (24321 / 10) % 10 = 2
 - (24321 / 1) % 10 = 1
 
Negacja operandu po lewej stronie modulo neguje wynik, podczas gdy negacja operandu po prawej stronie nie ma żadnego efektu:
- 13 % 3 = 1
 - 13 % −3 = 1
 - −13 % 3 = −1
 - −13 % −3 = −1
 
Przesunięcie bitowe w prawo i Przesunięcie bitowe w lewo dotyczą liczb w reprezentacji binarnej. Zera i jedynki tworzące liczbę są przesuwane w określonym kierunku, co może skutkować zupełnie inną liczbą, ze względu na zmianę wartości binarnej. Wykonywane przesunięcie nazywa się przesunięciem arytmetycznym, ponieważ zachowuje bit znaku na przesunięciu bitowym w prawo. W przypadku przesunięcia w lewo, 0 jest wstawiane do najmniej znaczącego bitu (LSB), a bit w najbardziej znaczącym bicie (MSB) jest tracony. W przypadku przesunięcia w prawo i liczba jest dodatnia (MSB=0), 0 jest wstawiane do MSB, a bit w LSB jest tracony. W przypadku przesunięcia w prawo i liczba jest ujemna (MSB=1), 1 jest wstawiane do MSB, aby zachować znak, a bit w LSB jest tracony.



Historia
- 2.0.7: 
- Przebudowano interfejs użytkownika.
- Teraz wyświetla sygnały wejściowe podczas konfigurowania sterowników.
 - Sygnały używane przez sterowniki można teraz filtrować między kolorem czerwonym, zielonym lub obydwoma.
 
 
 - Przebudowano interfejs użytkownika.
 
- 0.15.0: 
- Dodano Modulo, Potęgowanie, Przesunięcie bitowe w lewo, Przesunięcie bitowe w prawo, Bitowe AND, Bitowe OR i Bitowe XOR do Sterownika Arytmetycznego.
 - Added Modulo, Power, Left Bit Shift, Right Bit Shift, Bitwise AND, Bitwise OR and Bitwise XOR to the Arithmetic Combinator.
 
 
- 0.13.0: 
- Połączone przewody są podświetlane po najechaniu kursorem na sterownik podłączony do sieci sterowniczej.
 - Sterowniki pokazują dane wejściowe i wyjściowe w trybie alt.
 - Więcej wirtualnych sygnałów dla sterowników.
 - Nowa grafika sterowników.
 
 
- 0.12.5: 
- Sterowniki teraz emitują światło.
 
 
- 0.12.2: 
- Sterowniki nie wyłączają się już, gdy nie są podłączone żadne przewody.
 
 
- 0.12.0: 
- Wprowadzono.
 
 
