Produkt von Dualz. mit shift < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 08:24 Do 25.10.2007 | Autor: | RalU |
Aufgabe | Hallo!
Es geht um folgende Aufgabe:
Berechnen Sie das Produkt der Dualzahlen
1011011011 un 111111 so, dass Sie mit nur einer Addition bzw. Subtraktion (und Shiften) auskommen. |
Ok. Meine Überlegung war bisher, das ganze mittels linksshift und anschließender Subtraktion von der letzten Stelle durchzuführen.
also z.B. auf 1011011011 7 mal linksshift anzuwenden und dann [mm] 2^{7} [/mm] abzuziehen. Allerdings ist das denk ich der falsche ansatz. Aber so irgendwie auf die Art muss es doch gehen, oder?
Was wäre denn, wenn ich 7 mal linksshift auf 1011011011 anwende? bekomm ich dann 10110110110000000 ?
Wer kann mir helfen?
Danke für Eure Mühe.
Gruß, Ralf
|
|
|
|
Hallo RalU!
> Hallo!
>
> Es geht um folgende Aufgabe:
> Berechnen Sie das Produkt der Dualzahlen
> 1011011011 un 111111 so, dass Sie mit nur einer Addition
> bzw. Subtraktion (und Shiften) auskommen.
> Ok. Meine Überlegung war bisher, das ganze mittels
> linksshift und anschließender Subtraktion von der letzten
> Stelle durchzuführen.
>
> also z.B. auf 1011011011 7 mal linksshift anzuwenden und
> dann [mm]2^{7}[/mm] abzuziehen. Allerdings ist das denk ich der
> falsche ansatz. Aber so irgendwie auf die Art muss es doch
> gehen, oder?
>
>
> Was wäre denn, wenn ich 7 mal linksshift auf 1011011011
> anwende? bekomm ich dann 10110110110000000 ?
Ich bin mir nicht sicher, aber könntest du nicht 1011011011 mit 1000000 multiplizieren und dann einmal 1011011011 abziehen? Das käme doch aufs Gleiche raus, oder? Wenn du 253 mit 99 multiplizieren möchtest, kannst du es ja mit 100 multiplizieren und dann einmal 253 abziehen. Und das Multiplizieren geht doch mit Shiften!?
Viele Grüße
Bastiane
|
|
|
|
|
Hallo,
zu deinem Ansatz:
Zweierpotenzen kann man (s. Bastiane) mit Linksshifts von 1 berechnen. Also (b steht für binär):
(1011011011b << 7) - [mm] 2^7 [/mm] = (1011011011b << 7) - (1 << 7) = (1011011011b - 1) << 7 = 1011011010b * [mm] 2^7
[/mm]
Stimmt also nicht ganz.
Ich würde Bastiane zustimmen (warum so zögerlich?):
1011011011b * 111111b = 1011011011b * (1000000b - 1b) = 1011011011b * ((1b << 6) - 1b) = (1011011011b << 6) - 1011011011b
So müsste es gehen. Auf jeden Fall ist das ein Shift um 6, nicht um 7.
Gruß
Martin
|
|
|
|