2010-10-21 2 views
2

Это может быть очень запутанная и искривленная идея. Получил это, изучая некоторый JavaScript. Это заставило меня задуматься. Надеясь может быть кто-то, кто бы мог подумать об этом раньше или может просветить меня :-)Есть ли предел для базы, к которой могут быть привязаны числа?

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" 

Это заставило меня исследовать больше в базах. Я вспомнил свой курс цифровой инженерии и понял, что для каждого числа от 10 для базы больше 10 будет запущено именование из 'a', 'b' и далее.

для например:

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

Тогда я понял, это может пойти uptil 'г' Таким образом

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

Но это, кажется, конец. если мы делаем

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

Таким образом, я считаю, что мы можем рассчитывать только до основ 36. Так как для системы подсчета базы 37, мы не сможем рассчитывать 36, так как мы исчерпали английские символы. Так или иначе, мы можем это сделать? Может быть, мы можем добавить других персонажей.

Я знаю, что это очень бесполезная вещь, и никогда в жизни мы никогда не будем нуждаться в ней.

Но об этом кто-нибудь об этом подумал?

ответ

1

Да, конечно, это может быть сделано, только с функцией JavaScript toString.

Вам просто нужно определить, какие символы использовать для ваших цифр. Это во многом произвольно, хотя существуют некоторые установленные стандарты. См., Например, Base64, Ascii85 и т. Д.

+0

Извините, вы ответили полностью. Но так как в разделе «Preet Sangha's» говорится о более широком обсуждении. Я принимаю его как принятый ан. Однако +1 –

1

Вы, безусловно, может сделать это, число баз является полным произволен (с использованием английского алфавита после 9 только общее соглашение). Number#toString специально разработан для обработки основание 2 до 36:

Необязательный Radix должно быть целым числом в диапазоне 2 включительно до 36.

От the spec, раздел 15.7.4.2.