Introducción a los tipos octales y binarios en JavaScript

Resumen: en este tutorial, aprenderás cómo representar los tipos octales y binarios en ES6.
ES5 proporcionó tipos de datos numéricos en octal (prefijo 0
), decimal (sin prefijo) y hexadecimal (0x
). ES6
agregó soporte para binarios y cambió la forma en que se representa los octales.
Introducción a Octal y Binario
- El sistema de numeración
octal
es un sistema de numeración en base8
, una base que es potencia exacta de2
o de la numeraciónbinaria
. Esta característica hace que la conversión abinario
o viceversa sea bastante simple. El sistema octal usa8
dígitos (0, 1, 2, 3, 4, 5, 6, 7
) y cada dígito tiene el mismo valor que en el sistema de numeracióndecimal
. - El sistema
binario
, es un sistema de numeración en el que los números son representados utilizando únicamente dos cifras:0
(cero
) y1
(uno
).
Octales
Para representar un octal en ES5, utilizamos el prefijo cero (0
) seguido de una secuencia de dígitos octales (del 0
al 7
). Por ejemplo:
let a = 051;
console.log(a); // 41
Si el literal octal contiene un número que está fuera de rango, JavaScript ignora el 0
inicial y trata el literal octal como un decimal, como se muestra en el siguiente ejemplo:
let b = 058; // invalid octal
console.log(b); // 58
En este ejemplo, dado que 8
es un dígito no válido para representar el número octal, JavaScript ignora el 0
y trata el número entero como un decimal con un valor de 58
.
Ten en cuenta que puedes usar los literales octales en modo no estricto. Si los usas en modo estricto, JavaScript arrojará un error.
"use strict"
let b = 058; // invalid octal
console.log(b);
Aquí está el mensaje de error:
SyntaxError: Decimals with leading zeros are not allowed in strict mode.
ES6
te permite especificar el literal octal usando el prefijo 0o
seguido de una secuencia de dígitos octales del 0
al 7
. Aquí hay un ejemplo:
let c = 0o51;
console.log(c); // 41
Si usas un número no válido en el literal octal, JavaScript generará un SyntaxError como se muestra en el siguiente ejemplo:
let d = 0o58;
console.log(d); // SyntaxError
Binarios
En ES5, JavaScript no proporcionó ninguna forma literal para los números binarios. Para analizar una cadena binaria, utiliza la función parseInt()
de la siguiente manera:
let e = parseInt('111',2);
console.log(e); // 7
ES6 agregó soporte para literales binarios mediante el uso del prefijo 0b
seguido de una secuencia de números binarios (0 y 1). Aquí hay un ejemplo:
let f = 0b111;
console.log(f); // 7
Resumen
- Los literales
octales
comienzan con0o
seguido de una secuencia de números entre0
y7
. - Los literales
binarios
comienzan con0b
seguido de una secuencia de números0
y1
.