Arithmetic combinator/cs: Difference between revisions
m (Link fixes.) |
(Changed links going to the redirect Tutorial:Circuit-network_Cookbook to go to Tutorial:Circuit network cookbook.) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 24: | Line 24: | ||
# Výsledek operace je vysílán do vstupu jako předem nastavený kanál. | # Výsledek operace je vysílán do vstupu jako předem nastavený kanál. | ||
Levá část operace může být jakýkoliv signál včetně [[ | Levá část operace může být jakýkoliv signál včetně [[Circuit_network/cs#Logický signál|virtuálního signálu ''každý'']], pravá část může být jakýkoliv signál nebo konstantní hodnota. Je-li levá část výrazu jeden signál, výstup je také jeden signál. | ||
Pokud je levá část výrazu signál ''každý'', výstup je buď jeden signál nebo také signál ''každý''. Je-li výstup signál ''každý'', provádí se operace na každém signálu zvlášť a výsledky jsou také vysílány zvlášť na stejném kanálu, jako byl vstupní kanál výpočtu. Pokud je výstup jediný kanál, výsledky ze všech kanálů na vstupu se sečtou a vyšlou na zvoleném kanálu. | Pokud je levá část výrazu signál ''každý'', výstup je buď jeden signál nebo také signál ''každý''. Je-li výstup signál ''každý'', provádí se operace na každém signálu zvlášť a výsledky jsou také vysílány zvlášť na stejném kanálu, jako byl vstupní kanál výpočtu. Pokud je výstup jediný kanál, výsledky ze všech kanálů na vstupu se sečtou a vyšlou na zvoleném kanálu. | ||
Line 39: | Line 39: | ||
* -19 / -10 = 1 | * -19 / -10 = 1 | ||
Modulo, značené většinou programovacích jazyků jako %, je zbytkem po celočíselném dělení. Například 13 % 3 | Modulo, značené většinou programovacích jazyků jako %, je zbytkem po celočíselném dělení. Například 13 % 3 je 1 (13 = 4 * 3 + 1). To je užitečné například při oddělování jednotlivých cifer čísla pro použití pro displeje: | ||
* (24321 / 10000) % 10 = 2 | * (24321 / 10000) % 10 = 2 | ||
* (24321 / 1000) % 10 = 4 | * (24321 / 1000) % 10 = 4 | ||
Line 56: | Line 56: | ||
*{{L|Constant combinator}} | *{{L|Constant combinator}} | ||
*{{L|Circuit network}} | *{{L|Circuit network}} | ||
*[[Tutorial:Combinator | *[[Tutorial:Combinator tutorial|Combinator tutorial]] | ||
*[[Tutorial:Circuit | *[[Tutorial:Circuit network cookbook|Circuit network cookbook]] | ||
{{LogisticsNav}} | {{LogisticsNav}} | ||
{{C|Circuit network}} | {{C|Circuit network}} |
Latest revision as of 09:14, 9 July 2018
Aritmetický kombinátor |
Recept |
|||||||||||||
+ + → | |||||||||||||
Počty základních surovin |
|||||||||||||
+ + | |||||||||||||
Barva na mapě |
|||||||||||||
Životy |
|
||||||||||||
Velikost štosu |
50 |
||||||||||||
50 (1 stack) |
|||||||||||||
Konzumace energie |
1 kw (elektrické) |
||||||||||||
Doba těžebí |
0.1 |
||||||||||||
Jméno prototypu |
|||||||||||||
Interní jméno |
arithmetic-combinator |
||||||||||||
Požadované technologie |
|||||||||||||
Vytvářeno v |
|||||||||||||
Aritmetický kombinátor je součástí obvodové sítě a jedním ze třech typů kombinátoru ve hře (společně s konstantním a rozhodovacím kombinátorem). Každý aritmetický kombinátor provádí jednu z dostupných aritmetických operací na signálech, a bude ukazovat symbol dotyčné operace na své horní straně:
- sčítání (+)
- odčítání (-)
- násobení (*)
- dělení (/)
- modulo (%)
- umocnění (^)
- levý bitový posun (<<)
- pravý bitový posun (>>)
- bitové AND (&)
- bitové OR (|)
- bitové XOR (^)
Kombinátor přijímá až dvě vstupní připojení (červený a zelený drát) a výstup posílá do obou výstupních sběrnic. Vstupní zdířky jsou více zasunuté do těla kombinátoru, výstupní zdířky jsou více vyvedeny ven. Při použití klávesy Alt se také zobrazí šipky znázorňující vstup a výstup.
Funkce
Vnitřní logika pokračuje ve třech krocích:
- Každý signál nastavený jako vstupní je sečten ze zelených a červených připojení uvnitř kombinátoru.
- Na výsledku je provedena nastavená aritmetická operace.
- Výsledek operace je vysílán do vstupu jako předem nastavený kanál.
Levá část operace může být jakýkoliv signál včetně virtuálního signálu každý, pravá část může být jakýkoliv signál nebo konstantní hodnota. Je-li levá část výrazu jeden signál, výstup je také jeden signál.
Pokud je levá část výrazu signál každý, výstup je buď jeden signál nebo také signál každý. Je-li výstup signál každý, provádí se operace na každém signálu zvlášť a výsledky jsou také vysílány zvlášť na stejném kanálu, jako byl vstupní kanál výpočtu. Pokud je výstup jediný kanál, výsledky ze všech kanálů na vstupu se sečtou a vyšlou na zvoleném kanálu.
Poznámky k operacím
Při dělení se výsledek zaokrouhluje dolů:
- 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, značené většinou programovacích jazyků jako %, je zbytkem po celočíselném dělení. Například 13 % 3 je 1 (13 = 4 * 3 + 1). To je užitečné například při oddělování jednotlivých cifer čísla pro použití pro displeje:
- (24321 / 10000) % 10 = 2
- (24321 / 1000) % 10 = 4
- (24321 / 100) % 10 = 3
- (24321 / 10) % 10 = 2
- (24321 / 1) % 10 = 1
Je-li dělenec záporný, výsledek je také záporný. Záporný dělitel ale nečiní výsledek záporným.
- 13 % 3 = 1
- 13 % -3 = 1
- -13 % 3 = -1
- -13 % -3 = -1