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 |
||||||||||||
Wymagane do zbadania |
|||||||||||||
Produkowane w |
|||||||||||||
Sterownik arytmetyczny jest częścią sieci sterowniczej i jednym z trzech sterowników dostępnych w grze (wraz z sterownikiem stałym i sterownikiem decyzyjnym). 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
Wewnętrzny proces logiczny składa się z trzech etapów:
- Wszystkie sygnały wejściowe na czerwonym i zielonym przewodzie są sumowane wewnątrz sterownika.
- Wybrana operacja zostaje wykonana na wybranym sygnale (lub sygnałach).
- Wynik operacji zostaje wysłany jako wybrany sygnał wyjściowy.
Operandami mogą być dowolny pojedynczy sygnał lub stała wartość. Maksymalnie jeden z operandów może być wirtualnym sygnałem "każdy" (w grze opisanym jako "Dla każdego sygnału").
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 lewo i Przesunięcie bitowe w prawo nie są operacjami arytmetycznymi. Te operacje zajmują się liczbami binarnymi. Zera i jedynki składające się na liczbę są przesuwane w określonym kierunku, co może skutkować zupełnie inną liczbą ze względu na zmianę wartości binarnej.