Arithmetic combinator/de: Difference between revisions
m (fixed links) |
|||
(2 intermediate revisions by one other user not shown) | |||
Line 11: | Line 11: | ||
* Modulo (<span style="color:yellow">%</span>) | * Modulo (<span style="color:yellow">%</span>) | ||
* Potenzierung (<span style="color:yellow">^</span>) | * Potenzierung (<span style="color:yellow">^</span>) | ||
* | * Bitverschiebung links (<span style="color:cyan"><<</span>) | ||
* | * Bitverschiebung rechts (<span style="color:cyan">>></span>) | ||
* AND (und) (<span style="color:cyan">&</span>) | * AND (und) (<span style="color:cyan">&</span>) | ||
* OR (oder) (<span style="color:cyan">|</span>) | * OR (oder) (<span style="color:cyan">|</span>) | ||
* XOR (exklusiv-oder) (<span style="color:cyan">^</span>) | * XOR (exklusiv-oder) (<span style="color:cyan">^</span>) | ||
Der Kombinator für Berechnungen akzeptiert zwei Eingangsanschlüsse (rote und grüne Kabel) und sendet seinen Ausgang an beide Ausgangsanschlüsse. Die Eingangsleitungen werden mit den Noppen auf der linken Seite verbunden, während die Ausgänge mit der rechten Seite verbunden werden. | |||
[[File:Arithmetic_combinator_gui.png|350px|GUI des Kombinators für Berechnungen.]]<br /> | |||
== Funktion == | == Funktion == | ||
Der interne Logikprozess besteht aus drei Schritten: | Der interne Logikprozess besteht aus drei Schritten: | ||
# Alle Eingangssignale an den roten und grünen Drähten werden im Kombinator summiert. | # Alle Eingangssignale an den roten und grünen Drähten werden im Kombinator summiert. | ||
# Die angegebene Operation wird für die ausgewählten Signale ausgeführt. | # Die angegebene Operation wird für die ausgewählten Signale ausgeführt. | ||
# Das Ergebnis dieser Operation wird als ausgewähltes Ausgangssignal ausgegeben. | # Das Ergebnis dieser Operation wird als ausgewähltes Ausgangssignal ausgegeben. | ||
Der linke Operand der Operation kann ein beliebiges einzelnes Signal oder das virtuelle Signal ''Jedes'' sein, und der rechte Operand kann ein einzelnes Signal oder ein konstanter Wert sein. Wenn der linke Operand ein einzelnes Signal ist, muss der Ausgang ein einzelnes Signal sein. Die Operation wird an den Werten der ausgewählten linken und rechten Signale ausgeführt, und das Ergebnis wird mit dem angegebenen Signal an den Ausgang gesendet. Wenn der linke Operand das '' Jedes '' Signal ist, kann der Ausgang ein einzelnes Signal oder das '' Jedes '' Signal sein. Wenn der Ausgang das '' Jedes '' Signal ist, wird die Operation einzeln mit dem Wert jedes Eingangssignals zusammen mit dem Wert des rechten Operanden ausgeführt, und jedes Ergebnis wird mit demselben Signal an den Ausgang gesendet. Wenn der Ausgang ein einzelnes Signal ist, wird die Operation an jedem der Eingangssignale durchgeführt, die einzelnen Ergebnisse werden alle addiert und dieses Ergebnis wird an den Ausgang des angegebenen Signals gesendet. | Der linke Operand der Operation kann ein beliebiges einzelnes Signal oder das virtuelle Signal ''Jedes'' sein, und der rechte Operand kann ein einzelnes Signal oder ein konstanter Wert sein. Wenn der linke Operand ein einzelnes Signal ist, muss der Ausgang ein einzelnes Signal sein. Die Operation wird an den Werten der ausgewählten linken und rechten Signale ausgeführt, und das Ergebnis wird mit dem angegebenen Signal an den Ausgang gesendet. Wenn der linke Operand das '' Jedes '' Signal ist, kann der Ausgang ein einzelnes Signal oder das '' Jedes '' Signal sein. Wenn der Ausgang das '' Jedes '' Signal ist, wird die Operation einzeln mit dem Wert jedes Eingangssignals zusammen mit dem Wert des rechten Operanden ausgeführt, und jedes Ergebnis wird mit demselben Signal an den Ausgang gesendet. Wenn der Ausgang ein einzelnes Signal ist, wird die Operation an jedem der Eingangssignale durchgeführt, die einzelnen Ergebnisse werden alle addiert und dieses Ergebnis wird an den Ausgang des angegebenen Signals gesendet. | ||
== Hinweise zu Operationen == | |||
Bei Verwendung von '''Division''' wird das Ergebnis abgeschnitten: | |||
* 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''', angegeben mit %, wie es in den meisten Programmiersprachen der Fall ist, ist der Rest nach der Division. Zum Beispiel ist 13% 3 1 (13 = 4 · 3 + 1 bzw. 13 / 3 = 4 '''Rest 1'''). Dies kann zum Beispiel wie oben beschrieben mit einer abgeschnittenen Unterteilung kombiniert werden, um einzelne Ziffern einer Zahl zur Verwendung beim Erstellen visueller Indikatoren zu trennen: | |||
* (24321/10000)% 10 = 2 | |||
* (24321/1000)% 10 = 4 | |||
* (24321/100)% 10 = 3 | |||
* (24321/10)% 10 = 2 | |||
* (24321/1)% 10 = 1 | |||
'''Modulo''', angegeben mit %, wie es in den meisten Programmiersprachen der Fall ist, ist der Rest nach der Division. Zum Beispiel ist 13% 3 1 (13 = 4 · 3 + 1). Dies kann zum Beispiel wie oben beschrieben mit einer abgeschnittenen Unterteilung kombiniert werden, um einzelne Ziffern einer Zahl zur Verwendung beim Erstellen visueller Indikatoren zu trennen: | |||
* (24321/10000)% 10 = 2 | |||
* (24321/1000)% 10 = 4 | |||
* (24321/100)% 10 = 3 | |||
* (24321/10)% 10 = 2 | |||
* (24321/1)% 10 = 1 | |||
Das Negieren des linken Operanden eines Modulos negiert das Ergebnis, während das Negieren des rechten Operanden nichts bewirkt: | |||
* 13% 3 = 1 | |||
* 13% –3 = 1 | |||
* –13% 3 = –1 | |||
* −13% −3 = −1 | |||
''' | '''Bitverschiebung links''' und '''Bitverschiebung rechts''' sind keine Arithmetik. Stattdessen befassen sich diese Optionen mit Zahlen im Status [[:Wikipedia:de:Binärzahl|binär]]. Die Nullen und Einsen, aus denen eine Zahl besteht, werden in die angegebene Richtung verschoben, was aufgrund der Änderung des Binärwerts zu einer völlig anderen Zahl führen kann. | ||
[[File: Bitshiftleft.png | none | thumb | 200px | Beispiel für eine 'Bitverschiebung links'.]] | |||
==Siehe auch== | ==Siehe auch== |
Latest revision as of 14:56, 24 August 2021
Kombinator für Berechnungen |
Bauplan |
|
+ + → | |
Gesamtressourcen |
|
+ + |
Bauplan |
|
+ + → | |
Gesamtressourcen |
|
+ + |
Farbe auf Karte |
|
Trefferpunkte |
150 |
Stapelgröße |
50 |
Energieverbrauch |
1 kw (elektrisch) |
Abbauzeit |
0.1 |
Prototyp-Typ |
|
Interner Name |
arithmetic-combinator |
Benötigte Technologien |
|
Produziert von |
|
Der Kombinator für Berechnungen ist Teil des Schaltungsnetz und einer von drei Arten von Kombinatoren, die im Spiel verfügbar sind (zusammen mit dem Kombinator für Konstanten und dem Kombinator für Vergleiche). Jeder Kombinator für Berechnungen kann eine der folgenden mathematischen Operationen an Signalen ausführen und zeigt das entsprechende Symbol oben an:
- Addition (+)
- Subtraktion (−)
- Multiplikation (*)
- Division(/)
- Modulo (%)
- Potenzierung (^)
- Bitverschiebung links (<<)
- Bitverschiebung rechts (>>)
- AND (und) (&)
- OR (oder) (|)
- XOR (exklusiv-oder) (^)
Der Kombinator für Berechnungen akzeptiert zwei Eingangsanschlüsse (rote und grüne Kabel) und sendet seinen Ausgang an beide Ausgangsanschlüsse. Die Eingangsleitungen werden mit den Noppen auf der linken Seite verbunden, während die Ausgänge mit der rechten Seite verbunden werden.
Funktion
Der interne Logikprozess besteht aus drei Schritten:
- Alle Eingangssignale an den roten und grünen Drähten werden im Kombinator summiert.
- Die angegebene Operation wird für die ausgewählten Signale ausgeführt.
- Das Ergebnis dieser Operation wird als ausgewähltes Ausgangssignal ausgegeben.
Der linke Operand der Operation kann ein beliebiges einzelnes Signal oder das virtuelle Signal Jedes sein, und der rechte Operand kann ein einzelnes Signal oder ein konstanter Wert sein. Wenn der linke Operand ein einzelnes Signal ist, muss der Ausgang ein einzelnes Signal sein. Die Operation wird an den Werten der ausgewählten linken und rechten Signale ausgeführt, und das Ergebnis wird mit dem angegebenen Signal an den Ausgang gesendet. Wenn der linke Operand das Jedes Signal ist, kann der Ausgang ein einzelnes Signal oder das Jedes Signal sein. Wenn der Ausgang das Jedes Signal ist, wird die Operation einzeln mit dem Wert jedes Eingangssignals zusammen mit dem Wert des rechten Operanden ausgeführt, und jedes Ergebnis wird mit demselben Signal an den Ausgang gesendet. Wenn der Ausgang ein einzelnes Signal ist, wird die Operation an jedem der Eingangssignale durchgeführt, die einzelnen Ergebnisse werden alle addiert und dieses Ergebnis wird an den Ausgang des angegebenen Signals gesendet.
Hinweise zu Operationen
Bei Verwendung von Division wird das Ergebnis abgeschnitten:
- 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, angegeben mit %, wie es in den meisten Programmiersprachen der Fall ist, ist der Rest nach der Division. Zum Beispiel ist 13% 3 1 (13 = 4 · 3 + 1 bzw. 13 / 3 = 4 Rest 1). Dies kann zum Beispiel wie oben beschrieben mit einer abgeschnittenen Unterteilung kombiniert werden, um einzelne Ziffern einer Zahl zur Verwendung beim Erstellen visueller Indikatoren zu trennen:
- (24321/10000)% 10 = 2
- (24321/1000)% 10 = 4
- (24321/100)% 10 = 3
- (24321/10)% 10 = 2
- (24321/1)% 10 = 1
Das Negieren des linken Operanden eines Modulos negiert das Ergebnis, während das Negieren des rechten Operanden nichts bewirkt:
- 13% 3 = 1
- 13% –3 = 1
- –13% 3 = –1
- −13% −3 = −1
Bitverschiebung links und Bitverschiebung rechts sind keine Arithmetik. Stattdessen befassen sich diese Optionen mit Zahlen im Status binär. Die Nullen und Einsen, aus denen eine Zahl besteht, werden in die angegebene Richtung verschoben, was aufgrund der Änderung des Binärwerts zu einer völlig anderen Zahl führen kann.