Da viele der vorhandenen Antworten auf Implementierungsdetails von Java und Debug-Ausgabe verweisen, werfen wir einen Blick auf die Mathematik hinter der binären Multiplikation, um das Warum wirklich zu beantworten.
Der Kommentar von @kasperd geht in die richtige Richtung. Angenommen, Sie multiplizieren nicht direkt mit der Zahl, sondern mit den Primfaktoren dieser Zahl. Dann haben viele Zahlen 2 als Primfaktor. In der Binärdatei entspricht dies einer Linksverschiebung. Durch Kommutativität können wir zuerst mit Primfaktoren von 2 multiplizieren. Das heißt, wir machen nur eine Linksverschiebung.
Wenn Sie sich die binären Multiplikationsregeln ansehen, ist der einzige Fall, in dem eine 1 zu einer bestimmten Ziffernposition führt, wenn beide Operandenwerte eins sind.
Der Effekt einer Linksverschiebung ist also, dass die niedrigste Bitposition einer 1 beim weiteren Multiplizieren des Ergebnisses erhöht wird.
Da die Ganzzahl nur die Bits niedrigster Ordnung enthält, werden sie alle auf 0 gesetzt, wenn der Primfaktor 2 im Ergebnis oft genug beibehalten wird.
Es ist zu beachten, dass die Zweierkomplementdarstellung für diese Analyse nicht von Interesse ist, da das Vorzeichen des Multiplikationsergebnisses unabhängig von der resultierenden Zahl berechnet werden kann. Das heißt, wenn der Wert überläuft und negativ wird, werden die Bits niedrigster Ordnung als 1 dargestellt, aber während der Multiplikation werden sie erneut als 0 behandelt.