Hola amigos hoy veremos como manejar numeros grandes en javascript para eso usaremos la funcion BigInt() esta funcion es para manejar numeros grandes ya sea decimales, binarios o hexadecimales, segun buscando en internet esta funcion no tiene un limite fijo depende de tu memoria de tu equipo y es nueva fue lanzada en 2020 yo en lo personal no la conosia hasta que un amigo en el foro tenia un problema y recurri a chatgpt para que me creara una funcion para convertir numeros binarios grandes a decimales aqui les dejo la funcion que me arrojo chatgpt
function binarioGiganteADecimal(binario) {
let decimal = 0n; // Usamos BigInt (termina en n) para soportar números enormes
for (let bit of binario) { // Recorremos cada carácter ('0' o '1') de la cadena
decimal = (decimal << 1n) + BigInt(bit);
// (decimal << 1n) = decimal * 2
// Sumamos el bit actual convertido a BigInt
}
return decimal; // Devuelve el número decimal (BigInt)
bueno aqui mi codigo que le deje ami amigo ya modificado para que estubiera mas comodo de usar
<html>
<head>
<body>
<center>
Numero Binario:<textarea id="bin" cols="200"></textarea><br>
<input type="button" value="Convertir" onclick="conver()"><br><br>
Numero Decimal:<textarea id="num" cols="200"></textarea>
</center>
<script>
function binarioGiganteADecimal(binario) { //funcion binarioGiganteADecimal
let decimal = 0n; //declara la variable decimal y es inicializada
for (let bit of binario) { // recorre cada digito con el for
decimal = (decimal << 1n) + BigInt(bit); // Desplazamiento binario
}
return decimal; //retorna el valor decimal obtenido
}
function conver() //funcion cover
{
let binario = document.getElementById("bin").value; //inicializa la variable binario dependiendo el valor dado en el campo detexto bin
let decimal = binarioGiganteADecimal(binario);// manda llamar la funcion binarioGiganteADecimal y le envia el valor binario
document.getElementById("num").value=decimal.toString(); // muestra el resultado en el campo de texto num
}
</script>
</body>
</html>
bueno ese es el codigo, otra cosa yo pensaba crear una funcion para convertir el binario a hexadecimal creando una funcion y si se preguntan como pues si tenemos un numero binario como este por ejemplo
1011001010110111
mi metodo era devidirlo en partes de 4 digitos asi
1011 0010 1011 0111
y convertir cada parte en su valor hexadecimal asi
1011 0010 1011 0111
B 2 B 7
y tenemos esto que el numero
1011001010110111 es igual a B2B7 esa es una forma de convertir binario a hexadecimal...asi que le pedi a chatgpt que me creara una funcion para convertir binario a hexadecimal en javascript y esto me arrojo
function binarioGrandeAHexadecimal(binario) {
// Validar que solo tenga 0 y 1
if (!/^[01]+$/.test(binario)) { //if que pregunta que solo debe contener 0 y 1
throw new Error("El número debe ser binario (solo 0 y 1).");
}
// Convertir de binario (string) a BigInt
let numero = BigInt('0b' + binario);
// Pasar a hexadecimal
return numero.toString(16).toUpperCase();
}
bueno ahora usaremos mi codigo con el metodo que les mostre arriba
<html>
<head>
<body>
<center>
Numero Binario:<br>
<input type="numer" id="bin" style="width:600;text-align:center;"><br><br>
<input type="button" value="Convertir" onclick="conver()"><br><br>
Numero Hexadecimal:<br>
<input type="text" id="num" style="width:600;text-align:center;">
</center>
<script>
function binarioGigante(binario)
{
let x=binario.length-4,digi="",cadena=""; //declaramos las variables
while(x>0) //ciclo while
{
digi=binario.substr(x,4); //extrae los ultimos 4 digitos de la variable binario
digi=parseInt(digi,2); //conbierte el valor de digi a decimal para despues a hexadecimal
cadena=digi.toString(16)+cadena; //aqui convierte el valor de la variable digi a Hexadecimal y lo concatena con la variable cadena
binario=binario.substr(0,x); //desecha los digitos obtenidos
x-=4;//x sele resta menos 4
}
x=binario.length; //x toma la longitud de binario que halla quedado
digi=binario.substr(0,x); //extrae los ultimos
digi=parseInt(digi,2);//conbierte el valor de digi a decimal para despues a hexadecimal
cadena=digi.toString(16)+cadena;//aqui convierte el valor de la variable digi a Hexadecimal y lo concatena con la variable cadena
return cadena; //retorna el valor en de la variable cadena
}
function conver()
{
let binario = document.getElementById("bin").value; //inicializa la variable cadena
if(!/^[01]+$/.test(binario)) //pregunta si la variable binario solo contiene 0 y 1
{
alert("Introduce solo números binarios (0 o 1)."); // esta alerta salta si hay un valor que no sea 0 o 1
}
else
{
let hexa = binarioGigante(binario); //manda llamar la funcion binarioGigante y le envia el binario para despues retornar a la variable hexa el resultado
document.getElementById("num").value=hexa.toUpperCase();// muestra el valor hexadecimal en el campo de texto en mayusculas
}
}
</script>
</body>
</html>
aqui una foto del programa en ejecucion
bueno creo que eso es todo espero les guste y les sirva de algo saludos Flamer
No hay comentarios.:
Publicar un comentario