Wieviele Stellen bekomme ich beim Binär-Multiplizieren am Ende raus?
Wenn ich zwei n-Bit zahlen multipilizere bekomme ich ein Ergebnis von 2n-Bit Länge als Ergebnis.
Doch jetzt stell ich mir die Frage, wieviele Stellen ich bei der Multiplikation von 3-Bit Zahlen erhalte.
Mal angenommen, alle drei Zahlen a, b, c wären 32-Bit lang. Dann wäre das Ergebnis von a und b 64-Bit lang. Doch diese multipliziert mit c ... Ich würde schätzen 96 Bit, es könnten aber auch 128 Bit sein.
Kann mich wer aufklären welchesrichtig ist und wieso?
3 Antworten
Bei den Formeln, die übrigens auch für das Dezimalsystem gültig sind, geht es um die maximale Länge. Bei kleinen Zahlen kann es etwas weniger sein.
Die Faustregel lautet: Die Länge des Ergebnisses ist gleich der Summe der jeweiligen Längen der einzelnen Faktoren. Bei 99 * 999 * 9999 z.B. ist das Produkt 2 + 3 + 4 = 9, also ist das Ergebnis 9-stellig (=988911099), bei 10 * 100 * 1000 sind es nur 7 Stellen (=1000000), obwohl nach der Formel es ebenfalls 9 sein müssten. Die Fragestellung müsste korrekt lauten: Mit wieviel Stellen muss ich maximal rechnen und nicht Wieviel Stellen bekomme ich. Denn die Größe der Zahl spielt auch eine Rolle. Für jeden Faktor, der eine bestimmte Größe unterschreitet, kann das Ergebnis um eine Stelle kürzer ausfallen. Oder man zählt führende Nullen mit, dann wäre das Ergebnis auch 9-stellig (=001000000).
Fragen zur Binärmathematik sind sehr viel leichter zu übersehen, wenn man das Hexadezimalsystem anwendet. Man sieht einfach alles schneller und es rechnet sich auch besser.
Denn man kann immer 4 Bits zu einer Hexazahl zusammenfassen.
1111 * 1111 = F * F = E1 = 1110 0001
Der Computer macht es auch nicht anders.
da bekommt man 96 bit raus.
das kannst du dir einfach verdeutlichen. multipliziere 2 32-bit zahlen und dann multipliziere das ganze mal mit 10^32 :)
wobei du aber bedenken musst, das aus 2 n-bit zahlen nicht unbedingt eine 2n-bit zahle heraus kommt. versuch es mal mit 12*10
also bei m n-bit zahlen kannst du herausbekommen eine m*n-bit zahl bis hin zu einer m*n - m+1-bit zahl. also alles zwischen m*n und m*n -m+1 -bit ist möglich