Como Converter um Número Decimal para Binário em Javascript?

Compartilhar
Nesse tutorial, iremos aprender como converter um número decimal para binário no Javascript usando a função toString do tipo number.

Uso Simples

A função toString possui um único argumento, em Inglês chamado de radix, que refere a base a usada para produzir a string. No caso do número binário, a base é 2. Logo, o código seria:

const emDecimal_Number = 255;
const emBinario_String = emDecimal_Number.toString(2);
console.assert(emBinario_String === '11111111');

De String de Números

Note que estamos falando da função Number.toString(radix), logo, ela só existe em variáveis do tipo number. Para converter uma string em decimal para uma string em binário, é necessário primeiro converter a entrada para number usando uma função como parseInt para números inteiros ou parseFloat para números racionais.

const emDecimal_String = '255';
const emDecimal_Number = parseInt(emDecimal_String);
const emBinario_String = emDecimal_Number.toString(2);
console.assert(emBinario_String === '11111111');

Sem Variável

Para converter um valor sem usar uma variável, é necessário o uso de parênteses, já que o ponto (.) é ambíguo entre separador decimal (e.g. 3.14) e operador para acesso de membro (Number.toString).

const emBinario_String = (255).toString(2); // correto
const emBinario2_String = 255.toString(2); // erro de sintaxe

Números Binários Literais

Note que de qualquer forma o tipo retornado é string, ou seja, é texto, é uma representação textual de um valor como número binário. Não existe um tipo de number para números binários em Javascript. Porém, há como usar números escritos no formato binário diretamente através do prefixo 0b.

const emBinario_Number = 0b11111111;
console.assert(emBinario_Number === 255);

Como a arimética é a mesma para tanto números decimais como binários, também é possível usar esse código em adições, subtrações, etc.

console.assert(0b1000 + 0b1000 === 16);
console.assert(0b1000 * 2 === 16);
console.assert(0b1000 * 0b10 === 16);

Comentários

Deixe um comentário

Deixe seus pensamentos! Campos obrigatórios são marcados com *