Aucune conversion de base intégrée!
$&2%v2/;FL:vK2*;OS#
Essayez-le en ligne!
Pushy a deux piles, et cette réponse l’utilise beaucoup.
Il y a deux parties deux ce programme. Tout d'abord, $&2%v2/;F
convertit le nombre en sa représentation binaire inverse:
\ 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)
Étant donné l'exemple 10, les piles apparaîtront comme suit à chaque itération:
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]
Nous pouvons voir qu'après l'itération finale, 0, 1, 0, 1
a été créé sur la deuxième pile - les chiffres binaires inversés de 10,0b1010
.
La deuxième partie du code, L:vK2*;OS#
est tirée de ma réponse précédente, qui convertit les données binaires en valeurs décimales . En utilisant la méthode décrite et expliquée dans cette réponse, il convertit les chiffres binaires de la pile en un entier de base 10 et affiche le résultat.