Cuando se convierte un número decimal fraccionario a binario, se descompone en una suma de potencias negativas de 2:
Entonces, 0.625 en decimal se representa en binario como:
Supongamos que queremos representar el número decimal 5.75 en precisión simple (32 bits (tipo float) ):
Entonces, el número 5.75 se representa en IEEE 754 como:
| Signo | Exponente | Mantisa |
|---|---|---|
| 0 | 10000001 | 01110000000000000000000 |
cout << "Suma: " << (a + b) << endl; // Suma
cout << "Resta: " << (a - b) << endl; // Resta
cout << "Multiplicación: " << (a * b) << endl; // Multiplicación
cout << "División: " << (a / b) << endl; // División (entera: redondea hacia abajo)
cout << "Módulo: " << (a % b) << endl; // Módulo
Operaciones simples con módulo %:
const int MOD = 1e9 + 7; //limite de salida
cout << (a + b ) % MOD;
cout << (a - b + MOD) % MOD; // resta
cout << (a * b ) % MOD;
cout << (a / b ) % MOD; // INCORRECTO uso del modular inverso, ocupa el teorema de Fermat
cout << ( min + rand() % (max - min + 1) ); // número aleatorio limitado en mínimo y máximo
<cmath>min(a, b); min({a, b, c, d});
max(a, b); max({a, b, c, d});
pow(base, exp); powl(base, exp);
pow(p, 1.0 / n); // raíz n-ésima de `p`
fmin(a.b,c.d);
fmax(a.b,c.d);
log(num); //logaritmo natural ln
log10(num);
cos(num);
sin(num);
tan(num);
sqrt(num);
sqrtl(num);
inverseSqrt(n);// raíz inversa de `n`
constantes de <cmath>: M_PI, M_E,M_SQRT2, etc.
imprimir n cantidad de decimales:
#include <iomanip> // Para usar fixed y setprecision
cout << fixed << setprecision(digits) << var; // Si digits == 0 -> redondea.
manipulación de decimales en <cmath>:
round(num); // 1.45 -> 1 , 1.5 -> 2
trunc(num); // 1.5 -> 1
ceil(num); // 1.5 -> 2, con int ceil de `a/b` es: `(a + b - 1) / a`
floor(num); // 1.5 -> 1, con int `a/b` siempre sera floor
abs(num); // -1.5 -> 1.5, 1.5 -> 1.5
Cuando intentamos calcular la raíz cuadrada de un número negativo en C++, el resultado no es un número real, por lo que la función sqrt(-1) devuelve un valor especial llamado NAN (el cual es una cosntante de C).
NAN?Existen dos tipos de NAN en C++:
Quiet NaN (quiet_NaN):
std::numeric_limits<double>::quiet_NaN();.Signaling NaN (signaling_NaN):
std::numeric_limits<double>::signaling_NaN();.Puedes verificar si un valor es NAN utilizando la función isnan().
El infinito en C se maneja de manera similar con la constante INFINITY. Este valor es devuelto por operaciones matemáticas que resultan en un valor infinito, como una división entre cero. 1.0 / 0.0 = INFINITY
INFINITYisinf().std::numeric_limits<double>::infinity();.Mencionar que es importante el uso del parentesis ()
Answer = ceil(m/a) * ceil(n/a)