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
INFINITY
isinf()
.std::numeric_limits<double>::infinity();
.Mencionar que es importante el uso del parentesis ()
Answer = ceil(m/a) * ceil(n/a)