Wie kann ein Computer Minus rechnen?

10 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Der Computer unterscheidet nicht zwischen positiven und negativen Zahlen.

Zahlen mit beispielsweise 4 Bit haben einen Wertebereich von -8 bis 7.

Das erste Bit stellt das Vorzeichen dar.

Also ist die Zahl 1101 nicht 13, auch nicht -5, sondern -3.

Man errechnet sie, indem man die Zahl invertiert und dann 1 addiert:

1101 ≙ ~1101 + 1 ≙ 0010 + 1 ≙ 11 ≙ -3

Man muss auf das Vorzeichen achten (1 ≙ (-); 0 ≙ (+))

Der Computer addiert also eine negative Zahl - eine explizite Subtraktion gibt es also nicht.

Ich hoffe, ich konnte dir helfen; bei Fragen kannst du dich gerne an mich wenden. ;)

LG Willibergi


WarcraftheroE  30.03.2021, 21:15

1101 ist aber -5
1011 wäre -3

 Selbst im billigsten Taschenrechner sind µ-Controller verbaut die bestimmte Algorithmen abarbeiten. Sie müssen ja zb auch Dezimal in Binär umrechnen weil ein Computer nur mit Binärzahlen arbeiten kann. Was diese Algorithmen machen weiß nur der Hersteller. Jedenfalls kein simples Addieren ;-)

Der Computer rechnet einfach die zu subtrahierende Zahl in eine negative um. Zum Beispiel 5: positiv in binär : 0101. Negativ: 1011. Dann addiert er einfach eine andere Zahl drauf z.b. noch ne 6 und er hat das ergebnis -1


Ein Computer kann mehr als nur addieren. Jeder PC kann sowohl die dir bekannten Grundrechenarten (+,-,*,/), als auch logische Rechenoperationen (AND, OR, XOR, NAND, etc.) anwenden.


Willibergi  01.06.2016, 14:25

Das war ja nicht seine Frage.

DASS Computer derartige Rechenoperation durchführen können, ist ihm augenscheinlich schon klar - er wollte fragen, wie ein Computer subtrahiert.

LG Willibergi

Fishmeaker  01.06.2016, 14:33
@Willibergi

Wenn die Frage so gemeint war:

In der Recheneinheit des Computers sind die Logiken für mathematische und logische Operationen hinterlegt. Technisch kennt ein PC positive und negative Werte. Somit wird zum subtrahieren intern der abzuziehende Wert zunächst negiert und dann addiert.

Danke für den Hinweis!

Doch, ein Computer kann auch subtrahieren. Die Schaltung zum subtrahieren ist ähnlich zu der Schaltung zum addieren.

Wenn es keine eigene Schaltung zum subtrahieren gibt, kann man auch mit den sogenannten Zweierkomplement addieren und den Übertrag (Carry) negieren. Also Beispiel 90 - 15:

  01011010
- 00001111

Die 15 wird jetzt negiert und +1 gerechnet. Das ist das Zweierkomplement.

00001111 | negieren
11110000 | +1
11110001

Das wird auf die 90 addiert:

   01011010
+  11110001
-----------
(1)01001011

Die 1, die vorne in Klammern als Übertrag steht wird negiert. Also wird dort eine 0 draus. Das Ergebnis ist also 01001011 (Hex: 4B), was als Dezimalzahl 75 ist.


daCypher  01.06.2016, 13:58

Vielleicht als Ergänzung dazu: Für einen Bit-Addierer muss man eine Schaltung bauen, die folgende Wahrheitstabelle hat:

E1|E2|Cin || Cout | A
-----------------------
 0| 0| 0 || 0 | 0  0| 0| 1 || 0 | 1  0| 1| 0 || 0 | 1  0| 1| 1 || 1 | 0
 1| 0| 0 || 0 | 1
 1| 0| 1 || 1 | 0
 1| 1| 0 || 1 | 0
 1| 1| 1 || 1 | 1

Davon werden einfach mehrere verkettet. Das Cout vom niedrigeren geht immer in das Cin vom höheren Bit rein. C (Carry) ist halt der Übertrag. 

Für einen Bit-Subtrahierer sieht die Wahrheitstabelle so aus:

E1|E2|Cin || Cout | A
-----------------------
 0| 0| 0 || 0 | 0
 0| 0| 1 || 1 | 1
 0| 1| 0 || 1 | 1
 0| 1| 1 || 1 | 0
 1| 0| 0 || 0 | 1
 1| 0| 1 || 0 | 0
 1| 1| 0 || 0 | 0
 1| 1| 1 || 1 | 1

Man muss halt nur die logischen Schaltungen dazu bauen.

daCypher  01.06.2016, 14:55
@daCypher

Weitere Ergänzung: Beim Beim Bit-Addierer braucht man diese beiden Schaltungen:

Cout = (E1 AND (E2 OR Cin)) OR (E2 AND Cin)
A = (E1 XOR E2) XOR Cin

Für den Bit-Subtrahierer braucht man ein anderes Cout (beim A-Ausgang ist es, wie man sieht, die gleiche Schaltung)

Cout = (Not(E1) AND (E2 OR Cin)) OR (E1 AND E2 AND Cin)