Habe die Library schon gesehen, wollte es aber vermeiden diese zu
nutzen.
WÜrde es gerne selber verstehen.
Ich multipliziere z.B. zwei signed-Vektoren mit 16 bit -> kommt ein 32
bit Ergebnis raus.
Nehmen wir mal an, Vektor A ist +750 (signed 16 bit).
Vektor B ist soll z.B. 2.5 darstellen (würde dafür auch einen signed 16
bit Vektor nehmen).
Das heißt Bit(15) ist das Sign-Bit, Bit 14:13 geben Zahlenbereich von
0..3 an.. Der Rest ist dann Fraktional also Bit 12:0 ... Heißt also ich
muss die 2.5*(2^13) nehmen. Macht also 20480.
Nach der Multiplikation von den zwei signed 16-bit vektoren von +750 und
+20480 habe ich 15360000. Anschließend mache ich ein arithemtisches
Rechtsshift von 13 Bits mit Shift_Right. Dann komme ich ja erstmal
korrekterweise auf 1875.
Allerdings habe ich dann einen 19-Bit Vektor.
Bit(19) ist das Sign-Bit.
Wenn ich dann aber wieder einen 16 Bit Vector haben will (gehen wir mal
davon aus, dass nach der Multiplikation die 32768 nicht überschritten
werden würde), muss ich dann mit resize() wieder zu 16 Bit machen.
Korrekt?