No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Stdlib.h

11/12
Recursos

Aportes 16

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para quienes usamos Mac o Linux, las dos funciones system() utilizadas no funcionarán. Porque corren solo en Windows. Sí que la primera tiene su versión para sistemas UNIX. Para limpiar la consola, en lugar de system(cls); para Windows, deben usar system("clear");.

Creo que debería usarse el while mas que el for, porque no sabemos cuantos números binarios necesitara nuestro array

Buenas peña.
 
Otra opción para limpiar la pantalla válida para otros SSOO.

system("cls || clear");

Un saludo y gracias.

NO ENTENDI LA RAZON DE SACAR EL MODULO

Mi versión del Decimal2Binary.c

#include <stdlib.h>
#include <stdio.h>

int		main(void)
{
	long number;
	int binaryNumber[12];
	int i;
	
	i = 0;
	printf("Introduzca un valor\n");
	scanf("%d", &number);

	while (i++ < 12)
		binaryNumber[i] = 2;

	i = 0;
	while (number >= 0)
	{
		if(i < 12)
			binaryNumber[i] = number % 2;
		number = number / 2;
		if(number == 0)
			number--;
		i++;
	}
	printf("el número binario es: ");
	if(i > 12)
		i = 12;
	while (i-- > 0)
		if (binaryNumber[i] != 2)
			printf("%d", binaryNumber[i]);
	printf("\n");
}

salida

Introduzca un valor
8
el número binario es: 1000

Con Whiles

// 1er paso Dividir el valor entre 2 y almacenar el resto, mod, en un array
// 2do paso dividir otra vez entre 2 y almacenar el restante
// Repetir hasta que nuestro número ya no se pueda dividir

#include <stdio.h>
#include <stdlib.h>

int binaryNumber[12], n, i;

main()
{
    //system("cls");
    //system("color 9F");
    printf("Ingrese un valor decimal\n");
    scanf("%d", &n);
    printf("Usted va a convertir número %d a binario\n", n);


    
    while (n > 0)
    {
        binaryNumber[i] = n % 2;
        n = n / 2;
        i++;
    }
    i = i - 1;

    printf("La conversión de la conversión es: ");

    while (i >= 0)
    {
        printf("%d", binaryNumber[i]);
        i--;
    }

    return 0;
}

El siguiente codigo ocupa conocidos operadores para hacer las tareas de aritmetica en vez de decimal, solamente con los bits que representan al numero decimal en especifico, esto para el computador es ordenes de magnitud mas rapido que hacer las dichas operaciones aritmeticas. ```js #include <stdio.h> #include <stdlib.h> int binaryNumber[32], n, i; int main() { printf("Ingrese un numero decimal: "); scanf("%d", &n); int originalN = n; // Save the original value of n for (i = 0; n > 0; i++) { binaryNumber[i] = n & 1; n >>= 1; } printf("El numero binario es: "); for (i = i - 1; i >= 0; i--) { printf("%d", binaryNumber[i]); } printf("\n"); printf("El numero hexadecimal es: %X\n", originalN); return 0; } ```
El siguiente codigo ocupa conocidos operadores para hacer las tareas de aritmetica en vez de decimal, solamente con los bits que representan al numero decimal en especifico, esto para el computador es ordenes de magnitud mas rapido que hacer las dichas operaciones aritmeticas. ```js #include <stdio.h> #include <stdlib.h> int binaryNumber[999], n, i; int main() { printf("Ingrese un numero decimal: "); scanf("%d", &n); for (i = 0; n > 0; i++) { binaryNumber[i] = n & 1; // Check the least significant bit n >>= 1; // Shift right by one bit } printf("El numero binario es: "); for (i = i - 1; i >= 0; i--) { printf("%d", binaryNumber[i]); } printf("\n"); return 0; } ```
el numero binario es mayor a 12 en casos de que elijamos entradas superiores. binaryNumber\[15] para el nùmero elegido de 23519. La salida serà 101101111011111

Este es el código que implementé :3

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    char *inp;
    float number = 16;
    int sizeArr = (int)(1+log2(number));
    int binaryNum[sizeArr];
    for (int i = sizeArr - 1; i >= 0; i--)
    {
        binaryNum[i] = (int)number % 2;
        number /= 2;
    }
    for (size_t i = 0; i < sizeArr; i++)
        printf("%d", binaryNum[i]);
    return 0;
}

Es fundamental resaltar el uso del logaritmo en el cálculo de las cifras del número en binario

Otra cosa es que para ejecutar el comando en linux es importante “linkear” la librería
math.h, pueden encontrar las razones de esto en este enlace, básicamente no incluimos el código cuando usamos la cabecera math.h, si no solo los prototipos y formas de de llamar a las funciones, el código como per sé está en la librería libm, por esa razón es que debemos linkear el contenido (los códigos de las funciones per sé) y las definiciones (que están en math.h) manualmente al momento de compilar nuestro código

gcc output.c -o output -lm

Muy buena clase

que interesante las librerias que ya vienen para C

El codigo es algo complicado, covierte de decimal negativo o positivo a binario. Uso la logaritmacion para hallar cuantas posiciones exactas necesito en el array segun la cantidad de bits que tenga el numero en binario. ¡Feliz dia!

#include <stdio.h>
#include <math.h>

int main(void) {

int num;
int cantidad = 0;

 
printf("DECIMAL A BINARIO");

//While solo para hacer un blucle infinito  
while(cantidad > -1)
  {
    
printf("\n\nIngresa un numero entero: ");
scanf("%i", &num);
printf("%i en binario: ", num);

//If por si el numero es negativo 
if(num < 0)
  { num = fabs(num);
  printf("-"); }

//Logaritmacion para saber cuantos bits ocupa el numero en binario
//Log(16) = 4 - 16 tiene 5 bits.
if(num <= 16) { cantidad = 5; }
  else 
  { cantidad = ceil(log((double)num) / log((double)2)); }
  
int binNum[cantidad];
  
int i;
for(i = 0; num > 0; i++)
  { binNum[i] = num % 2;
    num /= 2;    
  }

/*If por si el binario tiene menos de 4 bits 
 agregar los ceros y completarlos */
if(num == 0 && i < 4) 
 while(i!=4){ binNum[i] = 0; i++; }
  
for(i = i-1; i >= 0; i--  )
  printf("%i", binNum[i]);
  }
}

Muy buena clase y ejemplo, gracias 😃

Un saludo.

si maso menos , lo entendí .Igual fue muy clara la explicación de Ricardo.

buena clase