2010-10-21 12 views
2

Cela peut être une idée très compliquée et tordue. J'ai tout en apprenant du JavaScript. Cela a piqué mon esprit. En espérant qu'il peut y avoir quelqu'un d'autre qui aurait pensé avant ou pourrait me éclairer :-)Y a-t-il une limite à la base à laquelle les nombres peuvent être associés?

var n = 17; 

binary_string = n.toString(2);  // Evaluates to "10001" 
octal_string = "0" + n.toString(8); // Evaluates to "021" 
hex_string = "0x" + n.toString(16); // Evaluates to "0x11" 

Cela m'a fait sonder plus dans les bases. Je me suis souvenu de mon cours d'ingénierie numérique et j'ai compris que pour tout nombre de 10 pour une base supérieure à 10, le nom commence par 'a', 'b'.

pour par exemple:

var n = 10; 
var y = 11; 
string = n.toString(12); // Evaluates to 'a' 
string = y.toString(12); // Evaluates to 'b' 

Alors je compris cela pourrait aller uptil 'z' Ainsi

var n = 35; 
string = n.toString(36); // Evaluates to "z" 

Mais cela semble être la fin. si nous

var n = 35; 
string = n.toString(37); // Gives error Error: illegal radix 37 { message="illegal radix 37", more...} 

Ainsi, je crois que nous ne pouvons compter que jusqu'à la base de 36. depuis un système de comptage de base 37, nous ne serons pas en mesure de compter 36 car nous avons épuisé les caractères anglais. Y at-il de toute façon nous pouvons le faire? Peut-être que nous pouvons ajouter d'autres personnages. Je sais que c'est une chose très inutile, et jamais dans la vie nous n'en aurons besoin.

Mais y a-t-il déjà quelqu'un réfléchi?

Répondre

1

Oui, bien sûr, cela peut être fait, mais pas avec la fonction toString de JavaScript.

Vous avez juste besoin de décider des caractères à utiliser pour vos chiffres. C'est en grande partie arbitraire, bien qu'il y ait quelques normes établies. Voir, par exemple, Base64, Ascii85 etc.

+0

Désolé, Votre réponse était complètement correcte. Mais depuis que d'autres discussions se poursuivent dans le qtn de Preet Sangha. Je l'accepte comme les années acceptées. Cependant +1 –

1

Vous peut certainement le faire, les bases numériques sont complètes arbitraires (en utilisant l'alphabet anglais après 9 est juste une convention commune). Number#toString est spécialement conçu pour traiter la base 2 à 36:

L'option radix devrait être une valeur entière dans l'intervalle compris 2 à 36.

De the spec, section 15.7.4.2.