Forum: Mikrocontroller und Digitale Elektronik Binäre Subtraktion auf Gatterebene


von ilm8 (Gast)


Lesenswert?

Ich möchte gerne einen kleinen Binärrechner bauen. Anfangs mal 4-Bit. 
Addieren, subtrahieren soll er können. Addieren ist natürllich kein 
Problem aber beim Subtrahieren bin ich nicht weitergekommen. Ich habe 
gelesen das man mittels eines Addierers auch subtrahieren kann indem man 
einen Summanden negiert. Mein Problem ist aber: Wie stellt man negative 
Zahlen Binär dar und rechnet mit ihnen. Das ist mal das wichtigste. Die 
Schaltung kann ich mir dann wahrscheinlich selbst machen. Schon mal 
jetzt danke für alle Antworten.

LG
Jakob

von Max M. (jens2001)


Lesenswert?

ilm8 schrieb:
> Wie stellt man negative
> Zahlen Binär dar

https://de.wikipedia.org/wiki/Zweierkomplement

von pegel (Gast)


Lesenswert?


von TomA (Gast)


Lesenswert?

Hallo ilm8.

Am Besten schaust du Dir mal die Wahrheitstabellen an.

Addition: (Ü = Übertrag in nächste Stelle)
0 + 0 = 0, Ü = 0
0 + 1 = 1, Ü = 0
1 + 0 = 1, Ü = 0
1 + 1 = 0, Ü = 1

Subtraktion:
0 - 0 = 0, Ü = 0
0 - 1 = 1, Ü = 1
1 - 0 = 1, Ü = 0
1 - 1 = 0, Ü = 0

Der Ausgang für beide Funktionen entspricht der XOR Funktion.

XOR: (# = XOR)
0 # 0 = 0
0 # 1 = 1
1 # 0 = 1
1 # 1 = 0

Den Übertrag für Addition bildest du aus A UND B.
Den Übertrag für Subtraktion aus A/ UND B.

Gruß. Tom

von ilm8 (Gast)


Lesenswert?

Danke euch.

von Zeno (Gast)


Angehängte Dateien:

Lesenswert?

z.B. so wie im Bild. 16Bit mit Übertrag

SUBY=1 bedeutet subtrahieren, SUBY=0 bedeutet addieren

von ilm8 (Gast)


Lesenswert?

Oh stimmt. Ich hab mir die Wahrheitstabelle eigentlich für Subtraktion 
angeschaut aber anscheinend war ich irgendwie zu blöd.

von TomA (Gast)


Lesenswert?

Habe noch vergessen. Die Tabellen zeigen nur einen Halbaddierer (1. 
Sufe). Für alle folgenden Stufen brauchst du einen Volladdierer, welcher 
einen Übertrag der vorhergehenden Stufe berücksichtigt.

Unter Halb- Volladdierer findest du alles Nötige im Netz oder 
Digitaltechnik Büchern.

von ilm8 (Gast)


Lesenswert?

Alles was mit addieren zu tun hat kenn ich mich eh aus danke

von Zeno (Gast)


Lesenswert?

ilm8 schrieb:
> Alles was mit addieren zu tun hat kenn ich mich eh aus danke

Äh warum fragst Du dann überhaupt???? Subtrahieren ist auch Addieren nur 
anders rum.

von S. R. (svenska)


Lesenswert?

TomA schrieb:
> Für alle folgenden Stufen brauchst du einen Volladdierer, welcher
> einen Übertrag der vorhergehenden Stufe berücksichtigt.

Braucht man für Subtraktion nicht überall Volladdierer, weil man den 
Subtrahenten inklusive seines Übertrags invertiert?

von John Doe (Gast)


Lesenswert?


Beitrag #6200044 wurde von einem Moderator gelöscht.
von Zeno (Gast)


Lesenswert?

S. R. schrieb:
> Braucht man für Subtraktion nicht überall Volladdierer, weil man den
> Subtrahenten inklusive seines Übertrags invertiert?

siehe meinen Schaltungsschnipsel 
(Beitrag "Re: Binäre Subtraktion auf Gatterebene")

von Arne (Gast)


Lesenswert?

TomA schrieb:
> Der Ausgang für beide Funktionen entspricht der XOR Funktion.

Richtig, und wenn man das jetzt noch auf einen 
Volladdierer/-subtrahierer erweitert (mit Uebertrags-Eingang), dann 
komme ich auf

A' = A xor SUB
Q = A xor B xor Ci
Co = (B and Ci) or (A' and (B or Ci))

(A, B = Operanden, Ci = Carry in, Co = Carry out, Q = Ergebnis, SUB = 0 
fuer addieren, 1 fuer subtrahieren)

Das laesst sich noch vereinfachen, indem man statt (B or C) (B xor Ci) 
nimmt, so dass man das Gatter aus Q verwenden kann. In diesem Fall kann 
man das letzte OR auch als XOR ausfuehren (da (B and Ci) und (B xor Ci) 
nie gleichzeitig eins sind), so dass man mit zwei Typen auskommt:

4x XOR, 2x AND.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.