É possível utilizar três notações distintas para se escrever literais numéricos em JavaScript. São elas:
- Base decimal. Esta é a notação numérica mais comum e que nós utilizamos normalmente no dia-a-dia. Os números são representados como uma sequência de caracteres que variam de 0-9. Exemplos de números na base decimal:
- 32 //Valor: 32 => 3*(10^1) + 2*(10^0)
- 0 //Valor: 0 => 0*(10^0)
- 101//Valor: 101 => 1*(10^2) + 0*(10^1) + 1*(10^0)
- Base hexadecimal. Esta notação é utilizada para escrver números na base 16. Esta notação pode ser familiar para você caso já tenha trabalhado com endereços de memória em alguma linguagem de baixo-nível. Os números são representados por '0x', ou '0X', seguido de uma sequência de caracteres que variam de 0-9 e A-F (representando os valores de 10 a 15, onde 'A' seria 10 e 'F' seria 15). Exemplos de números na base hexadecimal:
- 20 //Valor: 32 => 2*(16^1) + 0*(16^0)
- 0 //Valor: 0 => 0*(16^0)
- A //Valor: 10 => 10*(16^0)
- FE //Valor: 254 => 15*(16^1) + 14*(16^0)
- Base octal. Esta notação é aceita por alguns interpretadores JavaScript, no entanto não é definida no padrão oficial do JavaScript e portanto deve ser evitada sempre que possível. Para escrever um número na base octal você deve começar com um '0' seguido do número, que pode ser uma sequência de caracteres de 0-7. Exemplos de números na base octal:
- 20 //Valor: 16 => 2*(8^1) + 0*(8^0)
- 0 //Valor: 0 => 0*(8^0)
- .452985466768
- 15.2
- 0.5
- .25e2 //Valor: 0.25 * 10^2
- 13e-2 //Valor: 13 * 10^(-2)
[dígitos] [. dígitos] [ (E | e) [(+ | -)] dígitos ]
Bônus: para os que estiverem interessados, abaixo está o código de um simples conversor de base escrito em JavaScript.
var array = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",".","-","_"];
var number = prompt("Número:");
var base2 = prompt("Nova base:");
var base1 = array.slice(0,10);
var array2 = array.slice(0,base2);
var tmp = number;
var result = "";
for(var i = 0; tmp>0 ;i++){
var left = tmp%base2;
result += array2[left];
tmp = (tmp-left)/base2;
}
alert(result.split("").reverse().join(""));