Sé que 0x
es un prefijo para números hexadecimales en Javascript. Por ejemplo, 0xFF
representa el número 255.
¿Hay algo similar para los números binarios? Esperaría 0b1111
representar el número 15
, pero esto no funciona para mí.
javascript
Misha Moroshko
fuente
fuente
0b0111_0_1_0_1
.Respuestas:
Actualizar:
Las versiones más recientes de JavaScript, específicamente ECMAScript 6, han agregado soporte para literales numéricos binarios (prefijo
0b
), octales (prefijo0o
) y hexadecimales (prefijo0x
:):Esta característica ya está disponible en Firefox y Chrome. Actualmente no es compatible con IE, pero aparentemente lo será cuando llegue Spartan.
(Gracias a Punto y coma comentario 's y la respuesta de Urish por señalar esto.)
Respuesta original
No, no hay un equivalente para números binarios. JavaScript solo admite literales numéricos en formatos decimal (sin prefijo), hexadecimal (prefijo
0x
) y octal (prefijo0
).Una alternativa posible es pasar una cadena binaria al
parseInt
método junto con la raíz:fuente
0b
soporte.int type
niinteger type
, por lo que todos los enteros se almacenan como flotantes.En ECMASCript 6, esto se admitirá como parte del lenguaje,
0b1111 === 15
es decir, es cierto. También puede usar una B mayúscula (por ejemplo0B1111
).Busque
NumericLiterals
en la especificación ES6 .fuente
Sé que la gente dice que extender los prototipos no es una buena idea, pero ha sido tu guión ...
Lo hago de esta manera:
fuente
ParseInt("101", 2)
podría ser la respuesta real!Si su principal preocupación es la visualización en lugar de la codificación, hay un sistema de conversión incorporado que puede usar:
Ref: Referencia de número de JavaScript
fuente
Hasta donde yo sé, no es posible usar un denoter binario en Javascript. Tengo tres soluciones para usted, todas las cuales tienen sus problemas. Creo que la alternativa 3 es la más "atractiva" para la legibilidad, y posiblemente sea mucho más rápida que el resto, excepto por su costo inicial de tiempo de ejecución. El problema es que solo admite valores de hasta 255.
Alternativa 1:
"00001111".b()
Alternativa 2:
b("00001111")
Alternativa 3:
b00001111
Esta versión le permite escribir binarios de 8 dígitos
b00000000
, 4 dígitosb0000
y dígitos variablesb0
. Eso esb01
ilegal, tienes que usarb0001
ob1
.fuente
Puede ser esto útil:
fuente
bin
se le asigna un número que parece que está en binario, pero en realidad se está analizando en base 10. LaparseInt
función espera una cadena como primer argumento, por lo que la convierte en "1111" (representación en base 10), luego la vuelve a analizar como si era base 2.No, pero puede usar parseInt y, opcionalmente, omitir las comillas.
La única desventaja de omitir las comillas es que, para números muy grandes, se desbordará más rápido:
fuente
Convierta cadenas binarias a números y viceversa.
fuente
Sé que esto realmente no responde la pregunta Q (que ya fue respondida varias veces) como es, sin embargo, sugiero que usted (u otras personas interesadas en este tema) consideren el hecho de que es más legible y compatible con el navegador sería usar la representación hexadecimal.
De la redacción de la Q parecería que solo está hablando de usar literales binarios en su código y no procesar representaciones binarias de valores numéricos (para lo cual parstInt es el camino a seguir).
Dudo que haya muchos programadores que necesiten manejar números binarios que no estén familiarizados con el mapeo de 0-F afont>1111. básicamente, haga grupos de cuatro y use notación hexadecimal.
entonces, en lugar de escribir 101000000010, usaría 0xA02, que tiene exactamente el mismo significado y es mucho más legible y tiene menos probabilidades de tener errores.
Solo considere la legibilidad, intente comparar cuál de ellos es más grande:
10001000000010010 o 1001000000010010
y si los escribo así:
0x11012 o 0x9012
fuente
fuente