605 Aufrufe
Gefragt in Plauderecke von
hi,

ich versuche zwei binär zahlen voneinenader abzuziehen, habe da aber so meine schwierigkeiten, addiren klappt gut.

zB 17-7=10

10001
-111
--------


(ergbenis 10 = 1010)

also:

1-1=0
0-1=1 ;-1
0-2=???

und dah hakts..warum ist das null? wie bringe ich den übertrag weiter?

wenn wir einfach weitermachen:

0-2=0 ;-2
0-2=1 ;???? widerspruch... warum ist es jetzt auf einmal 0?

2 Antworten

0 Punkte
Beantwortet von
hallo, sowas wie "0-2" gibt es nicht, woher hast du es?
es kann sein, dass du beim rechnen die überträge falsch behandelst.
Übertrag -1 (0-1 // 0-1-1 // 1-1-1) geht doch auf die nächst höhere stelle drüber, nachher wird damit normal gerechnet und falls nötig wieder ein weiterer übertrag.

16|8|4|2|1
------------
1|0|0|0|1
- 1|1|1
---------------
- Überträge - 1 1 1
-------------------
0|1|0|1|0


ufff, das richtig zu platzieren war eine schwere arbeit, also bitte um nachsicht, wenn sich die stellen verschoben haben:-D

mfg
0 Punkte
Beantwortet von
Grundlegendes: Anstelle der normalen Subtraktion verwendet man im Binärsystem die Addition der Negation.
An deinem Beispiel erklärt:

Anstelle von 17 - 7 rechnet man (der Computer) 17 + (-7)

Wie man die Zahl negiert folgt jetzt:
7 (p=10) ergibt ja 0111 (p=2)

1. Du verringerst die Zahl um -1 (aus 7 wird also 6)
2. 6 (=10) ergibt 0110 (p=2)
3. Du invertierst die 0en und 1en (tauschst sie aus)
4. Aus 0110 wird also 1001
5. Wie du evtl. weißt, werden Negativzahlen eine 1 vorangestellt und postiven eine 0 (Die schreibt man nur nicht hin)
6. Du führst die negierte Addition aus
.........10001
.......+11001
........______
.........01010

Obwohl die vorderen zwei Ziffern von Zahl1 und Zahl2 wieder 0 (1+1) ergeben würden, und man sich eins "merken müsste" bleibt dies unbeachtet.

Wie du siehst haben wir nun das gewünschte Ergebnis 01010 (oder einfach 1010), 8 + 2 = 10

Ich hoffe ich konnte dir weiterhelfen.

Captain_Sparrow
...