Eu sei que 0x
é um prefixo para números hexadecimais em Javascript. Por exemplo, 0xFF
significa o número 255.
Existe algo semelhante para números binários? Eu esperaria 0b1111
representar o número 15
, mas isso não funciona para mim.
javascript
Misha Moroshko
fonte
fonte
0b0111_0_1_0_1
.Respostas:
Atualizar:
As versões mais recentes do JavaScript - especificamente o ECMAScript 6 - adicionaram suporte para literais numéricos binários (prefixo
0b
), octal (prefixo0o
) e hexadecimal (prefixo0x
:):Esse recurso já está disponível no Firefox e Chrome. No momento, ele não é suportado no IE, mas aparentemente será quando Spartan chegar.
(Agradecemos o comentário do ponto- e- vírgula e a resposta do urish por apontar isso.)
Resposta original:
Não, não há um equivalente para números binários. O JavaScript suporta apenas literais numéricos nos formatos decimal (sem prefixo), hexadecimal (prefixo
0x
) e octal (prefixo0
).Uma alternativa possível é passar uma string binária para o
parseInt
método junto com o radical:fonte
0b
suporte.int type
neminteger type
, portanto todos os números inteiros são armazenados como valores flutuantes.No ECMASCript 6, isso será suportado como parte do idioma, ou seja,
0b1111 === 15
é verdade. Você também pode usar um B maiúsculo (por exemplo0B1111
).Procure
NumericLiterals
nas especificações do ES6 .fonte
Eu sei que as pessoas dizem que estender os protótipos não é uma boa ideia, mas foi seu roteiro ...
Eu faço assim:
fonte
ParseInt("101", 2)
pode ser a resposta real!Se sua principal preocupação é exibir e não codificar, existe um sistema de conversão interno que você pode usar:
Ref: Referência de Número JavaScript
fonte
Tanto quanto sei, não é possível usar um denotador binário em Javascript. Eu tenho três soluções para você, todas com problemas. Eu acho que a alternativa 3 é a mais "atraente" para facilitar a leitura e é possivelmente muito mais rápida que as demais - exceto pelo custo inicial do tempo de execução. O problema é que ele suporta apenas valores de até 255.
Alternativa 1:
"00001111".b()
Alternativa 2:
b("00001111")
Alternativa 3:
b00001111
Esta versão permite que você digite 8 dígitos binários
b00000000
, 4 dígitosb0000
e dígitos variáveisb0
. Isso éb01
ilegal, você tem que usarb0001
oub1
.fonte
Pode ser que isso seja útil:
fonte
bin
recebe um número que parece estar em binário, mas na verdade está sendo analisado na base 10. AparseInt
função espera uma string como o primeiro argumento, para transformá-la em "1111" (representação da base 10) e, em seguida, a analisa novamente como se era base 2.Não, mas você pode usar parseInt e, opcionalmente, omitir as aspas.
A única desvantagem de omitir as aspas é que, para números muito grandes, você transbordará mais rápido:
fonte
Converta cadeias binárias em números e vice-versa.
fonte
Sei que na verdade isso não responde à pergunta Q (que já foi respondida várias vezes), como é, no entanto, sugiro que você (ou outras pessoas interessadas neste assunto) considere o fato de que os mais legíveis e compatíveis com os navegadores anteriores / futuros / cruzados maneira seria apenas usar a representação hexadecimal.
Pelo fraseado do Q, parece que você está falando apenas sobre o uso de literais binários em seu código e não sobre o processamento de representações binárias de valores numéricos (para o qual parstInt é o caminho a seguir).
Duvido que existam muitos programadores que precisam manipular números binários que não estão familiarizados com o mapeamento de 0-F para 0000-1111. então, basicamente, crie grupos de quatro e use a notação hexadecimal.
portanto, em vez de escrever 101000000010, você usaria 0xA02, que tem exatamente o mesmo significado e é muito mais legível e menos provável de ter erros.
Basta considerar a legibilidade. Tente comparar qual deles é maior:
10001000000010010 ou 1001000000010010
e se eu os escrever assim:
0x11012 ou 0x9012
fonte
fonte