Keine eingebaute Basisumwandlung!
$&2%v2/;FL:vK2*;OS#
Probieren Sie es online!
Pushy hat zwei Stapel, und diese Antwort macht ausgiebig davon Gebrauch.
Dieses Programm besteht aus zwei Teilen. Zuerst wird $&2%v2/;F
, wandelt die Zahl in ihrer umgekehrten Binärdarstellung:
\ Implicit: Input is an integer on main stack.
$ ; \ While i != 0:
&2%v \ Put i % 2 on auxiliary stack
2/ \ i = i // 2 (integer division)
F \ Swap stacks (so result is on main stack)
In dem Beispiel 10 würden die Stapel bei jeder Iteration folgendermaßen aussehen:
1: [10]
2: []
1: [5]
2: [0]
1: [2]
2: [0, 1]
1: [1]
2: [0, 1, 0]
1: [0]
2: [0, 1, 0, 1]
Wir können sehen, dass nach der letzten Iteration 0, 1, 0, 1
auf dem zweiten Stapel erstellt wurde - die umgekehrten Binärziffern von 10,0b1010
.
Der zweite Teil des Codes L:vK2*;OS#
stammt aus meiner vorherigen Antwort, die Binär in Dezimal umwandelt . Mit der in dieser Antwort beschriebenen und erläuterten Methode werden die Binärziffern auf dem Stapel in eine Ganzzahl zur Basis 10 konvertiert und das Ergebnis ausgegeben.