Wie verdoppele ich eine Anzahl von Binärziffern in einer Ganzzahl? Wenn beispielsweise bin (x)="1001" dann muss bin (y) "11000011" sein. Gibt es einen intelligenten und schnellen Algorithmus?
UPDATE: Hier ist eine elegante Lösung:
%Vor%wobei X bin (int_x) [2:]
istIch interessiere mich jedoch für einen schnelleren Weg und für die Ganzzahlen jeder Größe. Vielleicht sollte eine arithmetische Transformation helfen.
Hier ist eine Möglichkeit, die einigermaßen schnell sein sollte: Konvertiere deine Zahl in eine binäre Zeichenkette und interpretiere das Ergebnis dann in Basis 4. Um sicherzustellen, dass alle 1 richtig verdoppelt sind, multipliziere das Ergebnis mit 3.
%Vor%(Referenz Ссылка ):
Wenn Ihre Nummer unter 256 liegt, können Sie
verwenden %Vor%und wenn es unter 65536 liegt,
%Vor%Vergleich mit anderen Lösungen (die Funktion muss eine ganze Zahl annehmen und eine ganze Zahl für einen fairen Vergleich zurückgeben):
%Vor%Benchmark-Quellcode finden Sie in Ссылка .
Die einfache Lösung, die nur ganzzahlige Arithmetik verwendet, wäre:
%Vor%