Einerkomplement Multiplikation

Gast #1910213
Lesenswert?

Hi,

hat von euch schon mal jemand 2 Binärzahlen im Einerkomplement 
multipliziert? Ich bin wohl zu blöd dafür ;-). Kann mir jmd einen Tipp 
geben, bzw. einen Link?

bsp
7 also 0111 * -3 also 100

ergibt nach meiner rechnung 011100 (nach links shiften, also 2 0en 
anhängen)
was so gar nichts mit dem gewünschten ergebniss von 101010 (1+4+16, 0er 
zählen) zu tun hat.

Was mach ich falsch?
Positiv und im 2er Komplement gibt es keine Probleme.

Mfg
#1910764
Lesenswert?

Ich vermute, dass jemand kreativ genug war, eine Hausaufgabe zu stellen, 
für die man nicht an jeder Strassenecke einen Javascript-Rechner findet.

Der in der Branche recht bekannt Seymour Cray fand das Einerkomplement 
offenbar ganz praktisch. Eine Begründung dafür ist mir aber noch nicht 
begegnet.
#1910821
Lesenswert?

Irgendwie steh ich auf dem Schlauch.

Wie rechnet ihr da die Multiplikation?

Ich kenn das eigentlich nur so, dass man zu Beginn einer Multiplikation 
erst mal alle beiden Teilnehmer positiv macht und sich merkt ob einer 
oder alle beide Position waren. Das geht ganz einfach, weil man einfach 
nur ein 'Eregebnis muss negativ sein Bit' toggeln muss.
Dann wird mit den positiven Zahlen multipliziert und zum Schluss das 
Ergebnis möglicherweise noch negiert.


Aber diese 'Zusammenfassung der Multiplikationen' die bisher präsentiert 
wurden, die erinnern mich an die Mathematik Texte des Altertums, bei 
denen man auch mehr zwischen den Zeilen lesen muss als man sie verstehen 
kann.
Gast #1910843
Lesenswert?

... Erklär mir das mal mit 8 Bit: ...

Zahlenbreite 8 Bit.

- 3          1111 1100
  7          0000 0111
*
----------------------
 1764    110 1110 0100
   21           1 0101
/
----------------------
   84
>>
>>
----------------------
 21             1 0101
======================
Moderator (Firma: Titel) Persönliche Seite #1910869
Lesenswert?

Martin schrieb:
> - 3          1111 1100
>   7          0000 0111
> *
> ----------------------
>  1764    110 1110 0100
Wie das?
252 * 7 = 1764. Soweit klar...

Aber das sieht mir aus wie "am eigenen Haar aus dem Sumpf ziehen":
> ----------------------
>  1764    110 1110 0100
>    21           1 0101
> /
> ----------------------
>    84
Woher kommt jetzt hier "geteilt durch 21"?
Gast #1910892
Lesenswert?

Martin schrieb:
> Von deiner Forderung von 4- auf 8-Bit "umzusteigen".

Sorry aber das kapier ich nicht. Soll das heissen, daß Du abhängig von 
der Zahlenbreite eine Korrekturdivision und dann noch ein Shift 
brauchst?

Kannst Du dann auch eine allgemeingültige Regel ableiten.
Irgendwie gehts mir mindestens wie Karl Heinz.
Alchemie im binären :-)
#1910899
Lesenswert?

Karl heinz Buchegger schrieb:

> Ich kenn das eigentlich nur so, dass man zu Beginn einer Multiplikation
> erst mal alle beiden Teilnehmer positiv macht

Mindestens bei der Zweierkomplementmultiplikation kannst du dir diesen 
Schritt sparen, bei richtiger Vorzeichenbehandlung der Teilprodukte ist 
das überflüssig.

Erst recht wenn, wie in C, nur die untere Hälfte des Produkts verwendet 
wird - in dem Fall unterscheidet sich das Ergebnis bei Multiplikation 
mit und ohne Vorzeichen überhaupt nicht.
#1910924
Lesenswert?

Was jeder hier hoffentlich weiss: Dass die Multiplikation nach dem 
allseits bekannten Schema der schriftlichen Multiplikation in jeder 
Basis und jeder Zahlendarstellung (im Stellenwertsystem natürlich - die 
Römer hatte damit mehr Ärger) gleich funktioniert. Egal ob binär oder 
dezimal, egal ob Einer- oder Zweierkomplement oder Sign/Magnitude (wie 
in der IEEE Fliesskommadarstellung).

Man muss allerdings die Zwischenschritte auch entsprechend dieser 
Zahlendarstellung durchführen. Dabei kommen ja 2 verschiedene 
Teiloperationen vor: Die Multiplikation mit der Basis, also eine 
Verschiebung nach links, und die Addition. Beides sollte 
selbstverständlich im Einerkomplement durchgeführt werden - wo das in 
beiden Fällen ein bischen anders funktioniert als im Zweierkomplement.

Womit von dieser Hausaufgabe erst einmal die Fragen zu lösen wären, wie 
Addition und Linksschiebeoperation im Einerkomplement funktionieren. 
Bischen was solltest du schon noch selber machen ;-).
Moderator (Firma: Titel) Persönliche Seite #1911050
Lesenswert?

Natürlich könnte man eine Wahrheitstabelle aufstellen und irgend ein 
Mintermverfahren anwenden...
Ich finde es aber blöde, dass z.B. für 0011b * 0011b
das selbe herauskommen muß wie für 1100b * 1100b  (nämlich 1001)

Oder (binär) 0110*0110 = 1001*1001 = 1100
     (dez)     6 * 6   = -6  * -6  = 12

Das sieht schon auf den ersten Blick irgendwie aufwendig aus...  :-o

> Oder halt bei negativen Zahlen eins abziehen, um ins
> Zweierkomplement zu kommen, und dann wie gehabt...
Der Ansatz ist ähnlich pragmatisch wie meiner (eher noch brutaler):
Erst wandeln ins Zweierkomplement, dann Rechnen, dann zurückwandeln...
#1911066
Lesenswert?

Klaus Wachtler schrieb:

>> Andererseits machte es der Multiplier der CDC6600 ebenfalls so ;-).
>
> Mann, hast du moderne Kisten!

So arg viel moderner wird's nicht, wenn du mal nach Hardware mit Rechung 
in  Einerkomplement suchst. Dafür gibt's von der ein Buch, in dem der 
interne Aufbau ziemlich detailfreudig beschrieben ist. Zwar mit 
gewöhnungsbedürftiger Symbolik, aber für Freunde von Hardcore ziemlich 
interessant.
#1911067
Lesenswert?

Lothar Miller schrieb:
> Karl heinz Buchegger schrieb:
>> Ähm.
>> 6 * 6 ist aber 36
> Echt jetzt? Es ist schon spät... ;-)

... und du brauchst das Geld :-)

(Allerdings ist aber auch -6 * -6 gleich 36)

Und ihr könnt mich schlagen, wenn ich
1111001  mal  1111001   (jeweils -6 im 2-er Komplement, dargestellt mit 
7 Bit) rechne, dann kommt bei mir alles mögliche raus, nur nicht 36

Ich kann das hier
>> Ich kenn das eigentlich nur so, dass man zu Beginn einer Multiplikation
>> erst mal alle beiden Teilnehmer positiv macht
>
> Mindestens bei der Zweierkomplementmultiplikation kannst du dir diesen
> Schritt sparen, bei richtiger Vorzeichenbehandlung der Teilprodukte ist
> das überflüssig.

ums Verrecken nicht nachvollziehen.
#1911080
Lesenswert?

Karl heinz Buchegger schrieb:

> Und ihr könnt mich schlagen, wenn ich
> 1111001  mal  1111001   (jeweils -6 im 2-er Komplement, dargestellt mit
> 7 Bit) rechne, dann kommt bei mir alles mögliche raus, nur nicht 36

mag vielleicht auch daran liegen, dass -6 eben nicht 1111001 im 2-er 
Komplement ist :-)

Grrrrr, also nochmal. Ich hab jetzt schon fast 2 Seiten mit binären 
Multiplikationen vollgekritzelt :-)
#1911107
Lesenswert?

Karl heinz Buchegger schrieb:
> Karl heinz Buchegger schrieb:
>
>> Und ihr könnt mich schlagen, wenn ich
>> 1111001  mal  1111001   (jeweils -6 im 2-er Komplement, dargestellt mit
>> 7 Bit) rechne, dann kommt bei mir alles mögliche raus, nur nicht 36
>
> mag vielleicht auch daran liegen, dass -6 eben nicht 1111001 im 2-er
> Komplement ist :-)
>
> Grrrrr, also nochmal. Ich hab jetzt schon fast 2 Seiten mit binären
> Multiplikationen vollgekritzelt :-)



Tatsache: Jetzt hab ichs tatsächlich rausgekriegt. Muss mich wohl vorher 
irgendwo beim Untereinanderschreiben verhaut haben :-) Nachdem ich dann 
am karierten Papier die Zahlen sauber untereinander geschrieben habe, 
kommt auch bei -6 * -6 tatsächlich 36 raus (im 2-er Komplement)
Gast #1912476
Lesenswert?

Hi.

A. K. schrieb:
> Womit von dieser Hausaufgabe erst einmal die Fragen zu lösen wären, wie
> Addition und Linksschiebeoperation im Einerkomplement funktionieren.
> Bischen was solltest du schon noch selber machen ;-).

Ich hab hier sicher nicht gefragt, weil ich zu faul bin. Habe lange 
damit gewartet und wollte selber drauf kommen. Die genannten Regeln 
dafür glaube ich zumindest zu kennen (mit 1 auffüllen, übertrag 
dazuaddieren)

Ich hab jetzt zwar immer noch nicht 7*-3 aber -3*7 rechnen können.

 100*0111
 --------
  000000
  110011
  111001
  111100
  ------
10101000 //+übertrag
 +    10
 --------
  101010 = -21 (0er zählen)

Schreibt man die 000000 als 111111 passt auch die mit 1 auffüllen Regel 
beim Shiften wieder.

Wie 7*-1 geht kann ich mir immer noch nicht erklären. Wär aber wirklich 
interessant.

MfG
#1912494
Lesenswert?

Zu blöd schrieb:

> Ich hab jetzt zwar immer noch nicht 7*-3 aber -3*7 rechnen können.

Ich auch nicht ;-), hatte mich ja später korrigiert. Bei der linken 
Seite funktioniert das so, aber ob es bei negativen Werten auf der 
rechten Seite einen eleganteren Weg als den der Negation gibt weiss ich 
grad auch nicht. Wobei eine Negation bei Einerkomplement weit weniger 
Aufwand als bei Zweierkomplement darstellt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren