maximum - Javascript-convierte un entero a una matriz de bits
javascript maximum (7)
A partir de respuestas anteriores: es posible que desee que su matriz sea una matriz de enteros, no cadenas, por lo que aquí hay una sola línea:
(1234).toString(2).split('''').map(function(s) { return parseInt(s); });
Tenga en cuenta que la versión más corta, (11).toString(2).split('''').map(parseInt)
no funcionará (chrome), por lo que no (11).toString(2).split('''').map(parseInt)
por qué convierte "0"
s a NaN
s
Estoy intentando en javascript convertir un entero (que sé que estará entre 0 y 32), a una matriz de 0s y 1s. He mirado a mi alrededor pero no pude encontrar algo que funcione ...
Entonces, si tengo un número entero como 22 (10110 binario), me gustaría acceder a él como:
Bitarr[0] = 0
Bitarr[1] = 1
Bitarr[2] = 1
Bitarr[3] = 0
Bitarr[4] = 1
¿Alguna sugerencia? Muchas gracias
Además, este código da una matriz de 32length
function get_bits(value){
var base2_ = (value).toString(2).split("").reverse().join("");
var baseL_ = new Array(32 - base2_.length).join("0");
var base2 = base2_ + baseL_;
return base2;
}
1 => 1000000000000000000000000000000
2 => 0100000000000000000000000000000
3 => 1100000000000000000000000000000
Esto deberia hacer
for(int i = 0; i < 32; ++i)
Bitarr[i] = (my_int >> i) & 1;
Puedes convertir tu entero en una cadena binaria como esta. Note el parámetro base 2.
var i = 20;
var str = i.toString(2); // 10100
Puede acceder a los caracteres en una cadena como si fuera una matriz:
alert(str[0]); // 1
alert(str[1]); // 0
etc...
Usted podría hacer lo siguiente;
var n = 1071,
b = Array(Math.floor(Math.log2(n))+1).fill()
.map((_,i,a) => n >> a.length-1-i & 1);
console.log(b);
convertir a base 2:
var base2 = (yourNumber).toString(2);
acceder a los caracteres (bits):
base2[0], base2[1], base2[3], etc...
var a = 22;
var b = [];
for (var i = 0; i < 5; i++)
b[i] = (a >> i) & 1;
alert(b);
Suponiendo 5 bits (parecía de su pregunta), entonces 0 <= a < 32
. Si lo desea, puede hacer los 5
más grandes, hasta 32
(el cambio de bits en JavaScript funciona con un entero de 32 bits).