anun1

jueves, 28 de agosto de 2025

Manejar Numeros Grandes en JavaScript Con BigInt

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

  1. <html>
  2. <head>
  3. <body>
  4. <center>
  5. Numero Binario:<textarea id="bin" cols="200"></textarea><br>
  6. <input type="button" value="Convertir" onclick="conver()"><br><br>
  7. Numero Decimal:<textarea id="num" cols="200"></textarea>
  8. </center>
  9. <script>
  10. function binarioGiganteADecimal(binario) { //funcion binarioGiganteADecimal
  11.    let decimal = 0n; //declara la variable decimal y es inicializada
  12.    for (let bit of binario) { // recorre cada digito con el for
  13.        decimal = (decimal << 1n) + BigInt(bit); // Desplazamiento binario
  14.    }
  15.    return decimal; //retorna el valor decimal obtenido
  16. }
  17. function conver() //funcion cover
  18. {
  19.   let binario = document.getElementById("bin").value; //inicializa la variable binario dependiendo el valor dado en el campo detexto bin
  20.   let decimal = binarioGiganteADecimal(binario);// manda llamar la funcion binarioGiganteADecimal y le envia el valor binario
  21.  
  22.   document.getElementById("num").value=decimal.toString(); // muestra el resultado en el campo de texto num
  23. }
  24. </script>
  25. </body>
  26. </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